将日常常用的gdb操作记下来,记忆力不好
1.gdb 调试程序
gdb 程序文件
2.gdb 调试进程
gdb attach 进程pid
3.gdb 调试core文件
gdb --core=core文件 也可以 gdb -c core文件
也可以 gdb xx.dbg(带-g编译后的可执行文件) core文件 这样挺方便的,同时载入带符号的文件和core文件
4.gdb 常用命令
打断点:
b 函数名 or 文件名:行号
info b 查看所有断点
delete b 断点编号(可以从info b里看到)
disable b 断点编号
frame操作:
info f 查看所有frame
frame frame编号 切换frame(可以从info f 看到)
info locals (可以查看所有当前frame的局部变量)
bt 查看进程经历的frame列表
在调试core文件,以及查看当前运行点之前的frame里局部变量很有用
一般操作:
p 变量名 打印变量值
n 下一步
s 下一步,如果是函数会进入调用的函数里
finish 跳出循环或者函数
c 继续
ctrl+c 中断,这样就可以进行gdb设置,比如设置新的断点,查看其它信息之类,一般在c命令使用后,又想进行gdb操作时使用
好像经常用的就这么多,发现gdb是个神器啊,+上emacs+cscope+autocomplete,+make,真的不需要ide了,emacs的编辑速度真够快的。另外tcpdump是个调试网络的神器,介绍的文章网上很多