如何在一行中要求显示多个变量?所以我希望输出如下:
30 if(s[i] != '\0')
5: s[i] = 101 'e'
4: exp = 14
3: val = 123.45
2: sign = 1
1: i = 6
我一直在键入disp [i] ENTER disp exp ENTER(等等),我只知道在一行打字中必须有更好的方法。
答案 0 :(得分:9)
要在每次重新启动GDB时重新键入display i
,display s[i]
等各个活动“变量显示”,请使用GDB“固定命令序列”。
例如,将其添加到您的~/.gdbinit
:
define disp_vars
disp i
disp sign
disp val
disp exp
disp s[i]
end
现在,您可以通过在GDB提示符下键入disp_vars
来一次添加所有显示。
答案 1 :(得分:4)
受雇的俄罗斯人给出了正确的解决方案,但对于那些希望看到它在示例中使用的人,请参见下文。如果您不确定是否要将.gdbinit放在主目录中,您也可以将它放在正在执行该程序的目录中进行实验。
$ gcc -g atof_ex4.2.c
$ gdb ./a.out
(gdb) b 30
Breakpoint 1 at 0x1907: file atof_ex4.2.c, line 30.
(gdb) h user-defined
List of commands:
disp_vars -- User-defined
(gdb) disp_vars #this will enable the user defined canned sequence (but I haven't done run yet! So I'll this actually doesn't work yet.)
No symbol "i" in current context.
(gdb) r
Starting program: a.out
Breakpoint 1, atof (s=0xbffff028 "123.45e-6") at atof_ex4.2.c:30
30 if(s[i] != '\0')
(gdb) s # No disp_vars output yet because I have to do it AFTER 'run' command
32 if(s[i] == 'e' || s[i] == 'E')
(gdb) disp_vars # Now it will work ;)
(gdb) s
35 sign = (s[i] == '-') ? -1 : 1;
5: s[i] = 45 '-'
4: exp = 14
3: val = 123.45
2: sign = 1
1: i = 7
当然'r'用于跑步,'s'用于步骤,'b'用于休息等。我也省略了一些输出。请注意,我必须在'run'之后再次输入'disp_vars'命令。谢谢雇用俄语。