1、先根据链接建立一个测试demo
此博客参考以下链接得来,仅为学习记录用途
https://blog.csdn.net/xiaowen_10/article/details/45098069
2、生成src.o 目标文件
gcc -c -fPIC -g -rdynamic src.c
命令解析如下
3、生成动态库 src.so文件
4、将动态库链接成可执行文件
gcc test.c -g -lsrc 可见如下图生成了一个a.out可执行文件
5、GDB调试可执行文件
6、打断点查看堆栈
打断点查看堆栈可以参考以下指令去操作
-
启动程序和调试会话:
gdb program :启动 gdb 并加载可执行文件 program 进行调试。
run 或 r :运行程序。
attach <pid> :附加到正在运行的进程进行调试。
-
设置断点:
break <location> 或 b <location> :在指定的代码位置设置断点。
break <function> :在指定的函数内设置断点。
break <filename>:<line> :在指定的文件和行号设置断点。
-
运行程序和调试:
continue 或 c :继续执行程序直到下一个断点或程序结束。
next 或 n :执行下一行代码,但不进入函数调用。
step 或 s :执行下一行代码并进入函数调用。
finish :执行直到当前函数返回。
until :执行直到达到指定行号。
-
查看和修改变量:
print <variable> 或 p <variable> :打印变量的值。
set <variable> = <value> :设置变量的值。
-
观察表达式:
display <expression> :在每次停止时显示表达式的值。
undisplay <display_number> :取消显示指定的表达式。
-
回溯和堆栈:
backtrace 或 bt :打印当前的函数调用栈。
frame <frame_number> :切换到指定的堆栈帧。
up 或 down :在堆栈帧之间切换。
-
调试信息和符号表:
info breakpoints :显示当前设置的断点。
info locals :显示当前堆栈帧的局部变量。
info functions :显示已加载的函数列表。
info sharedlibrary :显示已加载的共享库列表。
-
退出调试会话:
|