gdb学习笔记

接连两篇笔记vim和makefile,vim可以看作是程序的编辑,makefile可以看作程序的编译,那么是时候再整一篇程序调试的文章了。linux下调试c/c++程序的命令是gdb,下面就记录一下gdb的常用操作。

常用调试命令

只有用gcc -g生成的程序才能调试。

命令 说明
backtrace(bt) 查看堆栈
finish 运行完当前函数
frame(f) 帧号 选择栈帧
info(i) locals 查看当前栈帧局部变量值
list(l) 行号 列出源码
next(n) 执行下一行
print(p) 打印表达式的值
quit(q) 退出gdb调试环境
set var 修改变量的值
start 执行程序,在main的第一行语句前停下
step(s) 执行下一步(进入函数)
kill 终止正在调试的程序
break(b) 行号 断点
break 函数名 断点
break 文件名:行号 断点
continue(c) 从当前位置开始继续执行
delete breakpoints 断点号 删除断点
display 变量名 跟踪某个变量
disable breakpoints 断点号 禁用断点
enable 断点号 启用断点
info(i) breakpoints 查看断点
run(r) 重新运行程序
undisplay 跟踪显示号 取消跟踪
watch 设置观察点
info(i) watchpoints 查看观察点
x x/7b input//从input变量处打印7个存储单元的内容
shell cmd 执行命令
set args 设置参数
show args 查看参数
show paths 查看程序运行路径
set environment varname=val 设置环境变量
show environment varname 查看环境变量
cd 切换目录
pwd 查看当前目录
info program 查看程序状态
clear 行号n 清除第n行上的断点
help 帮助

启动调试方法

  • gdb
  • gdb core
  • gdb

调试core文件

查看系统是否支持dump core功能:

1
2
3
$ ulimit -c

$ ulimit -a

配置系统使其支持生成core:

1
$ ulimit -c unlimited

gdb调试core文件:

1
$ gdb a.out my.core

总结

上面就是个简单的入门,要想深入还是要上网搜。