调试的艺术学习笔记--命令记录

 

1)单步调试: n (next), s(step 跟n的区别,s进入到函数内)

2)恢复操作:c(continue) 直到遇到下个断点

3)临时断点: tbreak 有效期,第一次遇到

4)检查变量:p (printf)

5)监视点:watch 当监视点的值发生变化时停止

6)查看栈:bt(backtrace) 显示整个栈的内容。

7)看已经设的断点: ib(info break)

8)设置断点:break function, break line_number, break filename:line_number, break filename:function

9)删除断点: delete+数值标识符(从第7点可得到) (不加参数,删除所有断点), clear使用跟第8点对应

10)禁用断点:disable+数值标识符 (重新启用 enable)

11)在单步时跳出函数:finish

12)在单步时跳出循环:until

13)条件断点:break break-arg if (condition),例: break main if argc > 1

14)断点命令列表(到断点自动执行):

   commands breakpoint-number 例子:commands 1

    ...                             >printf "i = %d", i 

   commands                         >end 

    ...

   end

   a) 在commands 中加入silent,过滤到其他无用的输出。

   b) 最后一个commands是continue的话,自动continue。

      例:comands 1

          > silent

          > printf "i = %d", i 

          > continue

          > end

 

15)查看局部变量:info locals 得到当前栈中所有局部变量的值列表

16)设置变量:set x=12

17)GDB线程命令:

   a) info threads(给出当前所有的线程信息)

   b) thread 3(切换查看线程)

   c) break 88 thread 3(当线程3到达源代码行88时停止执行)

   d) break 88 thread 3 if x == y

    e) thread apply all bt,查看所有的线程的栈信息。

 

18)  您可以以进程ID作为第二个参数,以调式一个正在运行的进程

        gdb 程序名 1234

 

 

注意点:

1)重新编译文件时不要退出gdb,断点可以保存着。

2)在调试时不要开启优化代码的选项,不然经过了优化,设置的断点的位置跟编译后的位置相差可能很大。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值