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

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

 

posted @   小陈叉叉  阅读(304)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示