接连两篇笔记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 | $ ulimit -c | 
配置系统使其支持生成core:
| 1 | $ ulimit -c unlimited | 
gdb调试core文件:
| 1 | $ gdb a.out my.core | 
总结
上面就是个简单的入门,要想深入还是要上网搜。