Linux gdb命令检查变量是否存在

Linux gdb命令检查变量是否存在,linux,debugging,gdb,command,Linux,Debugging,Gdb,Command,在GDB脚本中,如何检查堆栈变量是否存在 我使用GDB脚本遍历堆栈并访问(堆栈上的)变量。 但如果变量不存在,脚本将退出,并出现以下错误: < No symbol "variable" in current context > 我想知道是否有gdb命令来检查变量是否存在?有没有办法捕获这些异常并干净地退出?到目前为止,最简单的方法是使用Python编写gdb脚本。Python已经存在多年了 但是,也许可以用普通的gdb命令语言来完成。这不是很容易写,但有时事情可以通过技巧来完成

在GDB脚本中,如何检查堆栈变量是否存在

我使用GDB脚本遍历堆栈并访问(堆栈上的)变量。 但如果变量不存在,脚本将退出,并出现以下错误:

< No symbol "variable" in current context >
<当前上下文中无符号“变量”>

我想知道是否有gdb命令来检查变量是否存在?有没有办法捕获这些异常并干净地退出?

到目前为止,最简单的方法是使用Python编写gdb脚本。Python已经存在多年了

但是,也许可以用普通的gdb命令语言来完成。这不是很容易写,但有时事情可以通过技巧来完成

由于您只查看堆栈变量,我建议将“info args”和“info locals”的输出重定向到一个文件。然后使用脚本将此列表重写为新的命令列表。通过剥离,您还可以轻松筛选出未找到的变量。然后,让gdb“source”这个新的命令列表来执行您喜欢的任何操作


不过,让我重申,这比Python简单1000倍。您甚至可以采用快速而肮脏的方法找到Python“ignore errors”脚本——这将允许您的脚本忽略来自gdb命令的错误。

Thx以获得响应。我在gdb中看到了python命令,但没有看到如何在其中运行pythonpy文件。只允许运行简单的命令。但是为了实现遍历堆栈,我需要一个完整的脚本。看起来我可以通过source命令运行python脚本:“source-s pythoncode.py”以方便变量: