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

大家都知道在 Linux 可以用 gdb 来调试应用程序,当然前提是用 gcc 编译程序时要加上
-g
参数。
我这篇文章里将讨论一下用
gdb
来调试动态链接库的问题。


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

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

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


int get
();
int set (int a
);

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

#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

这样我们就准备好了动态链接库了,下面我们编写一个应用程序来调用此动态链接库,源代码如下:



#include <stdio.h
>

#include
"get.h"

int main (int argc, char** argv
)

{

        int a = 100
;

        int b = get
();

        int c = set (a
);

        int d = get
();

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

        return 0
;

}

编译此程序用下列命令,如果已经把上面生成的 libggg.so 放到了库文件搜索路径指定的文件目录,比如 /lib /usr/lib
之类的,就用下面这条命令:

QUOTE
:
g++ pk.cpp -o app -Wall -g -
lggg

否则就用下面这条命令:

QUOTE
:
g++ pk.cpp -o app -Wall -g -lggg -L`pwd
`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值