WEB开发网
开发学院软件开发Shell 如何在 Linux 下调试动态链接库 阅读

如何在 Linux 下调试动态链接库

 2009-06-30 03:44:00 来源:WEB开发网   
核心提示: 大家都知道在 Linux 可以用 gdb 来调试应用程序,当然前提是用 gcc 编译程序时要加上-g 参数,如何在 Linux 下调试动态链接库,我这篇文章里将讨论一下用 gdb 来调试动态链接库的问题, 首先,当然包括你的商业用途* 但请遵循 GPL*Hope:希望越来越多的人贡献自己的力量,为科学技术发展出力

   大家都知道在 Linux 可以用 gdb 来调试应用程序,当然前提是用 gcc 编译程序时要加上

-g 参数。
我这篇文章里将讨论一下用 gdb 来调试动态链接库的问题。


  首先,假设我们准备这样的一个动态链接库:

QUOTE:
库名称是: ggg
动态链接库文件名是: libggg.so
头文件是: get.h
提供这样两个函数调用接口:
   int get ();
   int set (int a);

要生成这样一个动态链接库,我们首先编写这样一个头文件:

[Copy to clipboard]
CODE:
/************关于本文档********************************************
*filename: get.h
*purpose:  一个动态链接库头文件示例
*tided by: zhoulifa(zhoulifa@163.com) 周立发 (http://zhoulifa.9999mb.com)
Linux 爱好者 Linux 知识传播者 SOHO 族 开发者 最擅长 C 语言
*date time: 2006-11-15 21:11:54
*Note: 任何人可以任意复制代码并运用这些文档,当然包括你的商业用途
* 但请遵循 GPL
*Hope:希望越来越多的人贡献自己的力量,为科学技术发展出力
* 科技站在巨人的肩膀上进步更快!感谢有开源前辈的贡献!
*感谢 vcclass@hotmail.com 提供原始代码,

我在他的基础上整理了此文
*********************************************************************/
int get ();
int set (int a);

然后准备这样一个生成动态链接库的源文件:

[Copy to clipboard]
CODE:
/************关于本文档********************************************
*filename:  get.cpp
*purpose: 一个动态链接库源文件示例
*tided by: zhoulifa(zhoulifa@163.com) 周立发 (http://zhoulifa.9999mb.com)
Linux 爱好者 Linux 知识传播者 SOHO 族 开发者 最擅长 C 语言
*date time:2006-11-15 21:11:54
*Note: 任何人可以任意复制代码并运用这些文档,当然包括你的商业用途
* 但请遵循 GPL
*Hope:希望越来越多的人贡献自己的力量,为科学技术发展出力
* 科技站在巨人的肩膀上进步更快!感谢有开源前辈的贡献!
*感谢 vcclass@hotmail.com 提供原始代码,

我在他的基础上整理了此文
*********************************************************************/
#include <stdio.h>

#include "get.h"

static int x=0;

int get ()

{

   printf ("get x=%d\n", x);

   return x;

}

int set (int a)

{

   printf ("set a=%d\n", a);

   x = a;

   return x;

}

然后我们用 GNU 的 C/C++ 编译器来生成动态链接库,编译命令如下:

QUOTE:
g++ get.cpp -shared -g -DDEBUG -o

libggg.so

1 2 3  下一页

Tags:如何 Linux 调试

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接