文章目录
- 1.编译成的可调试的debug版本
- 1.1gcc test.c -o testdebug -g
- 1.2readelf -S testdebug | grep -i debug
- 2.调试指令
- 2.0quit退出
- 2.1list/l/l 数字: 显示代码
- 2.2run/r运行
- 2.3断点相关
- 1. break num/b num: 设置
- 2. info b: 查看
- 3. d index: 删除
- 4. n: F10逐过程
- 5. p + 变量名: 调试过程显示变量信息
- 6. step/s : F11:逐语句
- 7. bt: 调用堆栈
- 8. finish: 运行完成当前函数 并返回调用此函数的位置
- 9. display + 变量名: 显示变量的值直到他被取消
- 10. undisplay + 编号: 取消常显示
- 11.until + num: 跳转到指定行 (当前栈帧)
- 12.continue/c: 运行至下一个断点停止
- 13. disable + 编号: 禁用当前断点
- 13. enable + 编号: 取消禁用当前断点
- 14. set var i = 100: 改变变量值
1.编译成的可调试的debug版本
1.1gcc test.c -o testdebug -g
gcc && g++ 默认形成的可执行程序是release版本 ---- 无法直接被调试
1.2readelf -S testdebug | grep -i debug
readelf 用于读取 ELF(Executable and Linkable Format)格式文件的详细信息,包括目标文件、可执行文件、共享目标文件与核心转储文件。
2.调试指令
2.0quit退出
退出
2.1list/l/l 数字: 显示代码
可视化差
从第一行开始显示
2.2run/r运行
≈ F5 若没有断点 则直接运行结束
2.3断点相关
1. break num/b num: 设置
在num行打断点
2. info b: 查看
3. d index: 删除
index: 断点的编号
4. n: F10逐过程
5. p + 变量名: 调试过程显示变量信息
6. step/s : F11:逐语句
7. bt: 调用堆栈
8. finish: 运行完成当前函数 并返回调用此函数的位置
9. display + 变量名: 显示变量的值直到他被取消
10. undisplay + 编号: 取消常显示
11.until + num: 跳转到指定行 (当前栈帧)
12.continue/c: 运行至下一个断点停止
13. disable + 编号: 禁用当前断点
断点仍然还存在 只不过禁用 Enb状态变为n(no)
13. enable + 编号: 取消禁用当前断点
Enb状态变为y(yes)
14. set var i = 100: 改变变量值
调试过程中 改变已有变量i的值