概述
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中执行。
最后
以上就是舒适抽屉为你收集整理的gdb调试器学习与总结(熟能生巧)的全部内容,希望文章能够帮你解决gdb调试器学习与总结(熟能生巧)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复