gdb调试小结
Posted momo0609
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gdb调试小结相关的知识,希望对你有一定的参考价值。
1、查看堆栈
gstack <pid>
2、挂载到正在运行的进程
gdb attach <pid>
3、调试core文件
gdb <app> <app.core>
gdb -c <app.core> <app>
4、设置产生core
查看当前core设置:
a) ulimit -a
b) cat /proc/sys/kernel/core_pattern
开启core并修改其位置:
a) ulimit -c unlimited
b) echo "/home/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
c) echo "1" > /proc/sys/kernel/core_uses_pid
其中第3个带pid,第2个带程序名、pid、时间戳。
注意:该方法是临时修改,系统重启后失效。永久修改可以在/etc/sysctl.conf里面按语法规则追加。
5、常用gdb命令
a) 查看堆栈(backtrace)
bt
t a a bt
第2个对所有线程打印堆栈(thread apply all backtrace)
b) 进入堆栈第3层(frame)
f 3
c) 查看源码片段(list)
list
d) 查看断点(info)
info break
e) 设置断点(break)
b funcA
b 1038
b file.c:funcA
b file.c:1038
b 1038 if i==99
f) 打印变量(print)
p retValue
g) 运行至断点(run)
r
h) 继续执行到下个断点(continue)
c
i) 单步进入函数(step)
s
j) 单步执行(next)
n
k) 跳出函数(finish)
finish
l) 监视变量值变化(watch)
watch p
m) 帮助与退出(quit)
help
q
6、编译带调试信息的二进制
gcc -g app a.c b.c
7、生成符号表
objcopy --only-keep-debug app app.symbols
8、用gdb拉起进程
gdb --args app p1 p2 p3
gdb -s app.symbols -e app
以上是关于gdb调试小结的主要内容,如果未能解决你的问题,请参考以下文章