您的位置:首页 > 其它

如何使用gdb进行调试

2013-07-10 05:04 295 查看
只有一些个人经常会用到的指令。

GNU C++中可以在编译的中间阶段暂停,具体分为:

-E 预处理之后停止,未编译;

-S 编译产生汇编代码后停止,未汇编;

-C 汇编产生机器代码后停止,未链接。

 或者不暂停,使用-o 获得目标程序。

调试之前,需要使用-g选项在目标代码中增加信息,产生目标代码的调试信息,然后将其装入调试器,如:

$ g++ -g -o helloworld helloworld.cpp
$ gdb helloworld
...
(gdb)


输入run可以运行程序,直到遇到断点暂停。

输入list可以将程序行号打印出来,一次10行,再次输入list可以打印接下来的10行。输入list n, 可以输出第n行附近的10行。

输入break n,可以在第n行设置断点。

输入delete breakpoint,删除所有断点,delete breakpoint n, 删除第n个断点。

输入clear,删除上一次暂停处的断点。clear n,删除第n行的所有断点。

输入next,单步调试,不进入子函数。

输入step,单步调试,进入子函数。

输入finish,在程序进入某一子函数时,退出该函数,返回上一层。

输入until n,运行到第n行停止。输入until,跳出当前循环体。

输入continue,可以继续运行程序,直到下一个断点。

输入quit,退出。

也可以只使用首字母,如r代表run,l代表list等。

还有一些针对数据的调试指令:

print xxx : 打印xxx变量一次,可以改变变量的输出进制或者数据类型,如 print /x xxx, 为输出变量xxx的十六进制格式。

display xxx : 每次暂停均打印xxx变量

ptype xxx : 查看变量xxx的数据类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  GDB