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 :显示已加载的共享库列表。
-
退出调试会话:
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现