GDB 常用调试技巧
目录
1. 调试宏
宏是预编译的,无法 print 宏的定义。但是如果配合 gcc, 我们还是可以有限地调试宏。
在 GCC 编译程序的时候,加上 -g3
参数,就可以调试宏了。
info macro mac_name
可查看宏定义,及位置macro expand mac_expr
可查看宏展开的样子
示例:
调试现场如下:
2. 修改变量
两种方法:
print var_name=x
set var var_name=x
示例:
调试现场如下:
3. 强制函数返回
使用
return
return expr
来忽略还没有执行的语句并返回
4. 跳转执行
jump location
简写 j location
可以实现跳转调试。
location 可以是行号, +/-偏移, 文件名:行号, 函数名,*内存地址 等
使用 jump 需要小心:
- 它类似于 c 语言的 goto, 需要注意跳转前后的联系, 否则可能出现程序崩溃等问题
- jump 在跳转后会立即执行,如果要在跳转后高度,需要配合断点使用。