加载核心转储文件时,有没有办法在gdb中显示局部变量状态?
我有一个核心转储文件加载到gdb并切换到某个帧(命令:frame#),但我不确定是否有可能捕获变量值而不实际运行它。
一些背景,调试一些导致seg错误的竞争条件并且很难重新创建。在gdb中运行无助于重现太多。因此,我最好的机会是以某种方式根据我目前拥有的核心文件找出哪些变量状态。
答案 0 :(得分:1)
如果有人在寻找答案,这对我来说总是有用的。
移至特定框架p
,后跟变量名称
示例:
(gdb) frame 6
#6 0x080f613d in add (add=0x8e5ae40) at main.c:6128**
6128 INSIST((error == 0) || (error == ENOENT));
(gdb) p error
$15 = 22
(gdb)
希望这有帮助!