gdb 查看变量值

Alexer 发布于 阅读:15 AI栈

gdb 是 Linux 下的命令行调试器,查看变量值就是把程序停在某一行,让它把变量当前的值打印出来。

步骤很直接:编译时带上 -g 保留调试信息,用 gdb 加载程序,下断点,运行到断点,print 变量名。

先准备一个 demo.c,里面放个 int 变量 count 就行,然后:

# 必须带 -g,同时关掉优化,否则变量可能被优化没
 gcc -g -O0 demo.c -o demo
 gdb ./demo

进入 gdb 后依次敲:

(gdb) break main      # 在 main 开头下断点
(gdb) run             # 运行到断点停下
(gdb) next            # 单步走一行
(gdb) print count     # 打印变量值
(gdb) print/x count   # 按十六进制看
(gdb) display count   # 每次停下来自动打印
(gdb) print *ptr      # 指针要解引用才看得到指向的内容

坑一:不加 -g 或开了优化,print 会报 No symbol 或 optimized out,这不是 gdb 坏了,是变量压根没被保留下来。坑二:print 只能看当前栈帧的局部变量,在别的函数里打印会失败,先用 bt 看调用栈,再用 frame N 切过去才能看到。

逆向基础 调试工具 代码分析