Linux系统下,单步调试动态库的简单demo

发布时间 2023-10-08 17:50:19作者: 小陈叉叉

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 命令:
  1. 启动程序和调试会话:

    • gdb program:启动 gdb 并加载可执行文件 program 进行调试。
    • run 或 r:运行程序。
    • attach <pid>:附加到正在运行的进程进行调试。
  2. 设置断点:

    • break <location> 或 b <location>:在指定的代码位置设置断点。
    • break <function>:在指定的函数内设置断点。
    • break <filename>:<line>:在指定的文件和行号设置断点。
  3. 运行程序和调试:

    • continue 或 c:继续执行程序直到下一个断点或程序结束。
    • next 或 n:执行下一行代码,但不进入函数调用。
    • step 或 s:执行下一行代码并进入函数调用。
    • finish:执行直到当前函数返回。
    • until:执行直到达到指定行号。
  4. 查看和修改变量:

    • print <variable> 或 p <variable>:打印变量的值。
    • set <variable> = <value>:设置变量的值。
  5. 观察表达式:

    • display <expression>:在每次停止时显示表达式的值。
    • undisplay <display_number>:取消显示指定的表达式。
  6. 回溯和堆栈:

    • backtrace 或 bt:打印当前的函数调用栈。
    • frame <frame_number>:切换到指定的堆栈帧。
    • up 或 down:在堆栈帧之间切换。
  7. 调试信息和符号表:

    • info breakpoints:显示当前设置的断点。
    • info locals:显示当前堆栈帧的局部变量。
    • info functions:显示已加载的函数列表。
    • info sharedlibrary:显示已加载的共享库列表。
  8. 退出调试会话:

    • quit 或 q:退出 gdb