add是库lib.c中的函数,生成liblib.so
gcc lib.c -shared -g -DEBUG -o liblib.so
编译调用库的程序,指定库文件使用当前路径
gcc applib.c -o applib -Wall -g liblib.so -Wl,-rpath,./
给动态库函数add设置断点
(gdb) b add
在下面提示中输入 y
Function "add" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (add) pending.
执行程序 r
(gdb) r
提示如下:
Starting program: /home/zqk/work/webserver/applib
Breakpoint 1, add (a=2, b=3) at lib.c:3
3 return a+b;
这时就进入到了动态库的函数中。
继续执行程序,输入c
(gdb) c
Continuing.
Rusult is 5
Program exited normally.
以下是测试程序:
/* lib.c */
int add(int a,int b)
{
return a+b;
}
/* lib.h */
extern int add(int a,int b);
/* applib */
#include <stdio.h>
#include "lib.h"
int main(void)
{
int a=2;
int b=3;
int result;
result = add(a,b);
printf("Rusult is %d/n",result);
return 0;
}