GDB调试
GDB调试
调试二进制
gcc -g -o main main.c
gdb main
调试正在运行中的程序
gdb attach <pid>
gdb main -p <pid>
基本命令
命令 | 缩写 | 命令说明 |
---|---|---|
break | b | break行号、break函数名、break文件名:行号(函数名) break 24 if i==15 条件断点 info break 查看断点信息 enable断点编号:表示启用该断点 |
run | r | 执行程序,直到遇到断点或者一直运行下去 |
step | s | 进入下一步,如果该行有函数,则进入函数 |
next | n | 执行当前语句,不进入函数 |
p | p i 打印变量i的值 p *req 打印结构体指针的内容 p ary[0]@5 查看ary数组的前五个元素 p /x ary[0]@5 以16进制查看ary数组的前五个元素 p &i 显示变量的地址 p *ary 指针指向的变量的值 print 函数名::变量名 当不同函数存在重名变量时指定函数名显示 |
|
continue | c | 继续执行程序,转到下一个断点处 |
finish | f | 结束当前函数,回到调用该函数的位置 |
quit | q | 结束调试 |
watch | w | 设置监视点,监视表达式的变化 |
set var i=10 | 调试时设置的值 | |
backtrace | bt | 显示程序当前运行位置及函数调用栈 |
up、down | 遍历函数堆栈 | |
list | 列出当前调试行附近的行 | |
set args | 设置主程序的参数 例如:./main args1 args2 gdb main (gdb)set args args1 args2 |
|
回车 | 执行上一条命令 |
查看相关信息:
info b # 断点被命中多少次
info locals # 打印所有的本地变量
info args # 打印当前函数的所有参数
调试core文件
ulimit -a
查看系统参数;ulimit -c unlimit
把core文件的大小设为无限制;- 运行程序,生成core文件;
- gdb 二进制文件 core文件
gdb main core.16382
(gdb)bt
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2018-02-22 SSH免密登录
2018-02-22 Python操作远程机器