常见用法
- 查看 Core 文件:gdb filename(
可执行文件
) core(core 文件
) - 查看当前堆栈信息:(gdb) bt(
backtrace
) <-n>(只打印栈底下n层信息
) - 查看某一层栈信息:
- (gdb) f(
frame
) n(栈深度
) - (gdb) up n(
向栈的上面移动
) - (gdb) down n(
向栈的下面移动
)
- (gdb) f(
- 自动显示:(gdb) display
- 设置运行时参数:(gdb) set args --gtest_filter=***
- 需要再编译的时候加
-g
参数才能显示源代码。
info
- 打印详细的栈信息:(gdb) info f
- 打印当前函数的参数名和值:(gdb) info args
- 打印当前函数的局部变量及其值:(gdb) info locals
- 打印当前函数中的异常信息调用:(gdb) info catch
p
- 查看指定文件或指定函数的变量:
- file::variable: (gdb) p 'f2.c'::x
- function::variable: (gdb) p 'Hello'::x
- 打印数组:(gdb) p *array@len
- 输出格式:(gdb) p/a i
- x 按十六进制格式显示变量。
- d 按十进制格式显示变量。
- u 按十六进制格式显示无符号整型。
- o 按八进制格式显示变量。
- t 按二进制格式显示变量。
- a 按十六进制格式显示变量。
- c 按字符格式显示变量。
- f 按浮点数格式显示变量。
调试
- 设置断点:
- (gdb) b filename:linenum
- (gdb) b filename:funcname
- 执行到第一个断点处:(gdb) r
- 执行程序到下一个断点:(gdb) c