这是本文档旧的修订版!
GDB
Tips
- 需要有调试符号,gcc 或 g++ 编译时带
-g参数 - 可用
file <your-file>来查看是否带了调试符号 - gdb 里使用
info sharedlibrary命令查看库符号加载 - 带参数:
gdb –args app arg1 arg2- 或者 gdb 启动后
set args arg1 arg2 - 或 run 时携带参数:
run arg1 arg2 - 查看参数
show args
- 查看所有断点
info breakpoints- 删除对应序号断点:
delete 1
- 如果进入某个函数直接崩溃报错, bt栈只显示到该函数地址,很大可能是改函数内栈溢出(一般是8M),查看变量或数组是否过大。
- 崩溃时,查看变量:
bt显示栈信息frame 0进入最顶部栈info local打印所有局部变量p <name>打印某个变量,可打印全局变量
常用指令
| 指令 | 简写 | 说明 |
|---|---|---|
| help | h | 查看帮助文档 |
| run | r | 执行程序 |
| break | b | 打断点 |
| info break | info b | 查看断点 |
| step | s | 步进、进入内部 |
| next | n | 执行下一行 |
| bt | bt | 查看栈调用信息 |
| p | 查看变量等 | |
| list | l | 查看当前代码 |
| info source | 查看当前源码文件 | |
| info sources | 查看源码文件 | |
| continue | c | 继续执行 |
| quit | q | 退出gdb |