GDB调试

前言

正文

参考

基础命令

  1. 注意使用gcc编译程序的时候要使用-g的选项,才会是生成的可执行文件里面有行号,才可以进行操作。
  1. l :显示程序
  2. b num: 打断点
  3. i: info的意思
  4. i b: 代表显示出断点信息
  5. start :让程序启动,会开始跑到断点的那个地方
  6. n:next就是一步一步向后走,直接就执行完函数体了
  7. c: 就是continue 继续跑
  8. s: step进入到函数体的内部
  9. p: printf 表示的是打印某个变量
  10. ptype: 显示某个变量的类型
  11. start和run的区别:默认情况下,run 指令会一直执行程序,直到程序执行结束。如果程序中手动设置有断点,则 run 指令会执行程序至第一个断点处. start 指令会执行程序至 main() 主函数的起始位置,即在 main() 函数的第一行语句处停止执行(该行代码尚未执行)。
  12. file 文件名(绝对路径): 可以通过file命令指定要进行gdb调试的文件。
  13. –args: 指定需要传递给程序的数据
  14. set args: 可以借助 set args 命令指定目标调试程序启动所需要的数据
  15. run® 数据:可以使用run 或者start启动目标程序时,指定其所需要的数据。
  16. cd /tmp/demo :将 GDB 调试器的工作目录修改为 /tmp/demo
  17. path /temp/demo :某些场景中,目标调试程序的执行还需要临时修改 PATH 环境变量,此时就可以借助 path 指令
  18. run >a.txt: 通过run > 可以将运行的程序的输出结果输出到a.txt.
  19. watch cond: watch 称为监控断点,cond 表示要监控的变量
  20. catch event:建立捕捉断点的方式很简单
  21. catch 库的名称:监控库的加载(使用ldd App 可以获知其运行所需加载的动态库)
  22. break … if cond: 在某种条件下使断点发挥其作用。
  23. condition bnum expression:参数 bnum 用于代指目标断点的编号;参数 expression 表示为断点添加或修改的条件表达式。用于为 bnum 编号的断点添加或修改 expression 条件表达式
  24. condition bnum:用于删除 bnum 编号断点的条件表达式,使其变成普通的无条件断点
  25. ignore bnum count: 参数 bnum 为某个断点的编号;参数 count 用于指定该断点失效的次数。仅为一个整数,它用来表示该断点失效的次数
  26. next,step,until :都可以控制GDB调试器每次只执行一行代码。
  27. step next基本相同:但当step遇到函数时,会进入到函数内部,并在函数第一行代码处停下。
  28. until:不带参数的 until 命令,可以使 GDB 调试器快速运行完当前的循环体,并运行至循环体外停止。注意,until 命令并非任何情况下都会发挥这个作用,只有当执行至循环体尾部(最后一行代码)时,until 命令才会发生此作用。
  29. until location:location只是行号。
  30. finish:如果是在循环体内非最后一次循环,直接finish是出不来的。可以把循环的位置的断点去掉。就可以跳出函数体了。
  31. set var 变量名= 赋值:设置变量的值
  32. display 变量名:自动打印变量值,设置追踪变量
  33. undisplay:取消追踪变量
  34. info display:获取编号
  35. u: 跳出循环的命令
  36. quit:退出gdb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正冬升

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值