gdb调试器学习与总结(熟能生巧)

      gcc原来的意思是gnu c compiler, 现在的意思是gnu compiler collection, gdb是gnu debugger, 在本文 , 我们学习并总结gdb的使用。

 

1. 不是所有的可执行文件, 都可以用gdb来debug, 必须使用带有调试信息的可执行文件。

    gcc -g test.c     其中-g就表示要带调试信息。

 

2. gdb a.out        用gdb打开a.out这个可执行文件,从而进入gdb中, 显示如下。 注意, gdb中也支持tab键补全操作。

    (gdb)

     实际上, 也可以先输入gdb 然后输入file a.out

 

3.  在gdb中输入help, 可以查阅帮助信息,当然, 如果你用help break, 那将得到更详细的信息。 help可以简写为h

 

4.  enter键表示执行上一个命令。当然也可以用向上的方向键盘, 然后enter, 难道你不觉的后者很麻烦吗?

 

5.  list  列出带有行号的源码, 一般指列出一部分, 可以按enter键重复上一个命令, 继续列出。每次list默认显示10行, 当然, 也可以人为更改这个设置。

     list 60表示列出第60行左右的代码, 即可能是55-65之间。

     list + 显示当前行后, list -显示当前行前

     list 55, 65 显示之间的行数

     list fun 列出fun函数代码

     list可以缩写为l

 

6. list太死板, 可以用search实现搜索, 如search int main   , 可以按enter键继续往下找。search 太固执, 只能朝一个方向找。

    可以用reverse-search逆向找, 如reverse-search printf

    search和reverse-search支持正则表达式。

 

7. break 10 表示在第10行下断点。 break fun表示在函数fun处下断点。break可以简写为b

 

8. info break可以查看下断点的位置, 有必要让程序员知道自己下了哪些断点。

 

9. run 表示让程序开始跑起来, 运行到断点。 run可以简写为r

 

10.  next表示单步执行, 而不是执行到下一断点。 next 2表示运行两步。 net可以简写为n

 

11. continue表示运行到下一个断点, 可以缩写为c

 

12. step会进入函数内部, 而next则会跳过没有断点的函数,stp可以简写为s.

 

13. print i 用于打印i的值, print后面也可以用表达式, print可以简写为p

 

14.watch i  监测i, 一旦i的值发生变化, 则停下来, 跟断点有点类似。

     rwatch监测读, awatch监测读写(access)

     info watchpoints 列举所偶监视点

 

15. set var i = 100    临时强制更改i的值, 有点流氓。

 

16. backtrace查看栈信息, 简写为bt. 这个非常常用。 backtrace = bt = where = info stack

 

17. clear 10 表示删除第10行的断点, delete 2表示删除第2行的断点。

 

18. 当进入一个函数后, 可以用return 100强行返回函数, 后面的语句不执行, 够流氓的。

 

19. quit退出gdb, 简写为q.

 

20. gdb a.out core,  用来调试core dump产生的core文件, 很有用, 在后续博文中, 我们会进行重点介绍。 

 

21. shell命令, 可以在gdb环境下执行shell中的命令, 如shell ls ,  很方便, 免得每次都退出gdb到shell中执行。

 

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值