本帖最后由 zhongguoluren 于 2012-10-19 19:18 编辑
经过一番的折腾,中国路人终于把手上的项目搞定。细细品味,发现Linux下用core dump调试真真事半功倍,之前让人纠结的GDB调试也掌握个大概。普通调试用到的GDB命令整理发布。涉及到GDB调试的可以参阅一下。
启动GDB的方式
- 直接输入gdb
- gdb 程序名
- gdb 程序名 core文件
GDB启动示例
- gdb
- gdb ./test
- gdb ./test core
GDB命令
- b [linenum/func] -以行号/函数名为标识下断点
- b [filename] : [linenum] – 在某文件某行下断点
- l -显示源代码
- l [filename] : [linenum/func] -列出某文件某行的附近代码/函数
- bt -打印堆栈
- c -类似使用VS调试时的F5键
- n -单步调试
- info break -显示断点信息
- delete [num] -删除断点,num为info break断点信息中的断点编号
- disable [num] -暂时屏蔽断点,num同上
- enable [num] -恢复断点,num同上
- display [variant] -当触发断点时,显示变量variant的值
- whatis [variant] -显示变量的类型,可用ptype命令代替
- finish -跳出函数执行体,相当于VS的SHIFT+F11
- u -跳出循环体
- step -相当于VS的F11键
- p [variant] -打印变量的值
- info locals -显示当前所有局部变量的值
- layout src -显示源代码窗口,调试时会有更新问题,可用CTRL+l更新
- b [linenum/func] if [condition] -可以在某条件成立的时候,在某处下断点
- watch [variant] -类似VS的监视变量,当触发断点时,会打印variant的值
- file [程序名] -当以gdb命令直接进入调试的时候,可以使用该命令加载所要调试的程序
调试COREDUMP文件
- 当程序由于某种原因崩溃后会生成core dump文件,里面包含程序崩溃时的堆栈信息和其他信息
- ulimit –c unlimited
要程序崩溃后自动生成core dump文件,需要执行ulimit -c命令设置core dump文件的大小,一般会在用户配置文件添加此命令,最后一个参数为设置core dump文件大小,这里设为不限制大小
- 为了能掌握更多调试信息,我们要添加编译选项-g, 并把优化选项等级设为最低(-O0, 默认为-O2)
调试core dump示例
- gdb ./test core
- where -显示引起程序崩溃的位置
- ba -打印堆栈信息
引自http://www.sidongxiao.com/2012/10/19/gdb-commonly-commands/ |