gdb常用操作
查看core文件是否生成,返回0表示不生成,一般是unlimited不显示core文件大小,设置过小可能会截断core文件,调试时会报错
1 | ulimit -c |
开启core文件生成
- 临时生效
1 | ulimit -c unlimited // 当前启动进程生效,临时生效 |
- 永久生效(不建议,或者第一个参数指定为具体执行用户)
1 | ## 编辑 /etc/security/limits.conf |
gdb加载core文件
1 | # gdb 可执行文件 core文件 |
gdb命令
查看函数堆栈
1
(gdb) bt 或者 where
跳到第bt的第N帧
1
f N
列出源码
1
list 或者 l
重复上一次命令—回车
设置断点,在源程序第N行处 : break/b
1
(gdb)break 12
设置断点,在函数func()入口处
1
(gdb) break fun
查看断点信息
1
(gdb) info break
根据GDB分配给断点的标识符@1、@2…等等来删除
1
(gdb) delete 12
运行程序
1
(gdb) run
单步执行 next/n
1
(gdb) next
继续运行程序 continue
1
(gdb) continue
打印变量i的值 print/p
1
(gdb) print i
打印vector变量前两个元素
1
(gdb) p *(v._M_impl._M_start)@2
打印array第60~69的元素
1
(gdb) p array[60]@10
打印a的成员b
1
(gdb) p a.b
打印a的类型
1
(gdb) whatis a
打印a类型的结构
1
(gdb) ptype a
退出函数
1
(gdb) finish
退出gdb quit / q
1
(gdb) quit