调试前提
被调试程序在编译时要加入-g选项,这样才能产生供gdb调试使用的信息。
例:$ gcc -g hello.c
基本命令
(1)启动调试。
$ gdb <可执行文件名>。执行此命令,只是为调试做好了准备,尚未启动被调试程序运行。此时进入调试界面。
(2)设置可执行文件参数。如无参数可省。 (gdb) set args 参数1 参数2 参数3 ...。查看用 (gdb) show args
(3)设置断点。
(gdb) break <文件名:行号>。
例:(gdb) break hello.c:5 //则在hello.c文件的第5行设置断点。
(4)启动程序。
(gdb) run 。此时被调试程序开始运行,并停在前面设置的断点处。
(5)单步执行。
(gdb) next //单步执行,如遇到函数直接跳过,不进入函数内部
(gdb) step //单步执行,如遇到函数,会进入函数内部
(6)查看断点处状态
(gdb) print <变量名> //查看变量
(gdb) list //查看断点处附近代码
(gdb) x /<内存单元个数><显示方式><内存单元大小> <内存起始地址> //查看内存
如 (gdb)x /6xb pObj ,会打印出从pObj指向的内存地址开始的6个连续单元,显示格式为16进制,每个单元大小为一个字节,。
显示方式:x 十六进制格式显示变量;d 十进制格式;u 十进制格式显示无符号整型;o 八进制格式;t 二进制格式;a 十六进制格式;i 指令地址格式;c 字符格式;f 浮点数格式。
内存单元大小:b单字节;h双字节;w四字节;g八字节。
(7)继续执行。
(gdb) continue
(8)退出调试
(gdb) quit
转自:http://blog.csdn.net/smstong/article/details/7220622