Search This Blog

Friday, February 03, 2006

gdb

其实我不会用gdb,一直都不会,但是直到上学期做汇编课程设计的时候,实在是没办法了,不用gdb根本就不可能发现问题了,才硬着头皮开始学着用。然后就发现它真的是一个很优秀的调试器。
当然我是在emacs里用的,不过跟shell下用是没什么区别的,如果不去管emacs提供的那些快捷键的话。
如果启动gdb的时候没有指定要调试的程序,那么在启动后可以用file filename来完成这个工作。
然后呢,run就可以运行要调试的程序。哦,还有,如果是用gcc编译的话,加个-g的选择,可以给gdb提供足够的调试信息。
break可以设置断点,我喜欢break 1这样让程序一启动就暂停
until linenum可以让程序运行一直到指定的行号(或指定的行号以后)
list可以显示出源程序以及行号
p,就是print,可以打印出程序中的变量值,这个比较重要,p后可跟一个/F,其中F是输出的格式,比如x是十六进制,d是十进制,o是八进制等等, 还可以打印整个数组,如果有array[3] 这样的声明,那么可以用p *array@3把array的3个元素打印出来
next可以让程序运行一条指令(调试汇编时是机器指令,高级语言时我想应该是一条语句,而在c语言里声明变量之类的语句是不会被next单独执行一次的)
这些是最基本的命令,用法相当复杂,具体可以查看info gdb
调试器在你对于你的程序运行错误没有头绪的时候是很有用处的

No comments: