dbg -基础指令

文章目录

  • 0 、GDB 是什么?为什么需要它?
  • 1 、准备工作:编译带调试信息
  • 2、基础:断点、运行、查看
    • 2.1 启动 GDB
    • 2.2 断点 (break)
    • 2.3 运行程序
    • 2.4 单步执行
    • 2.5 查看变量
    • 2.5 常用指令集合
      • 2.5.1 where
      • 2.5.2 shell cls
      • 2.5.3 gdb模式下 如何重新开始运行
      • 2.5.4 删除特定编号断点和全部断点
      • 2.5.5 quit
  • 3、中级命令:条件断点、观察点、调用栈
    • 3.1 条件断点
    • 3.2 观察点(watchpoint)
    • 3.3 检查调用栈
    • 3.4 修改程序状态
  • 4、高级命令:信号、核心转储、反汇编、内存
    • 4 .1 信号处理
    • 4.2 核心转储(Core Dump)调试
    • 4.3 反汇编与机器级调试
    • 4.4 检查内存
    • 4.5 远程调试
    • 4.6 多线程调试
    • 4.7 脚本与自动化
  • 5、结合 PID 仿真程序的实战调试演练
  • 6 、高级技巧:反向调试与 TUI 模式
  • 7、CLion 调试与命令行 GDB 的关系
  • 8、总结与最佳实践
  • 9 专栏目录

系统讲解GDB 调试器,从安装启动到高阶技巧。


0 、GDB 是什么?为什么需要它?

GDB(GNU Debugger)可以让你:

  • 让程序在任意位置暂停(断点)
  • 一行一行单步执行代码
  • 查看变量的值内存寄存器
  • 追踪函数调用栈
  • 调试崩溃转储文件(core dump)
  • 甚至修改程序状态以测试修复

对于 PID 仿真,常见问题如:积分项为何发散?输出为何振荡?用printf大法不仅麻烦,还会改变时序行为,而 GDB 可在不修改代码的情况下精准定位。


1 、准备工作:编译带调试信息

GDB 需要程序包含调试符号(变量名、行号、函数名等)。在 Makefile 中我们已经使用了-g选项:

CFLAGS = -O0 -g -Wall -std=c11
  • -O0关闭优