我正在使用 Xcode 的调试器。当停在断点处时,是否可以在 GDB 命令提示符中键入命令来创建局部变量?如果是这样,怎么办?请举个例子。
我知道我可以在代码中完成它,然后重新编译程序,但我正在寻找一种更快的方法。
如果您不需要在代码中引用变量而只想进行一些临时调查,则可以使用便利变量 https://sourceware.org/gdb/onlinedocs/gdb/Convenience-Vars.html通过使用set
变量名开头为的命令$
:
(gdb) set $foo = method_that_makes_something()
(gdb) set $bar = 15
(gdb) p $bar
$4 = 15
您会注意到,当您打印内容时,它会以数字变量为前缀 - 您也可以稍后使用它们来引用该值:
(gdb) p $4
$5 = 15
重申一下:这实际上不会影响程序的堆栈,而且也不能,因为这会破坏很多东西。但如果您只需要一个本地游乐场、一些循环变量等,它会很有用。
虽然您无法修改堆栈,但您可以与程序的内存空间交互 https://stackoverflow.com/questions/10284103/how-to-declare-a-variable-in-the-scope-of-a-given-function-with-gdb/21671662#21671662- 您可以调用函数(包括malloc
)并构造对象,但这些都将存在于静态内存中,而不是作为堆栈上的局部变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)