在GDB脚本中,如何检查堆栈variables是否存在?
我有GDB脚本来通过堆栈和访问variables(堆栈)。 但是,如果variables不存在,脚本将退出并显示以下错误:
< No symbol "variable" in current context >
我想知道是否有一个gdb命令来检查variables是否存在? 有没有办法赶上这些例外,并干净地退出?
到目前为止,最简单的方法是使用Python编写gdb脚本。 Python已经有好几年了。
但是,也许可以用普通的gdb命令语言来完成。 这不是很脚本,但有时候可以用技巧来完成。
既然你只看堆栈变量,我建议将“info args”和“info locals”的输出重定向到一个文件中。 然后将这个列表重写到一个脚本中,将这个列表重写成一个新的命令列表。 通过脱壳,你也可以很容易地过滤出未找到的变量。 然后,让gdb“源”这个新的命令列表来做任何你喜欢的事情。
不过,让我重申,这是Python的1000倍。 你甚至可以采取快速和肮脏的方法,并找到Python的“忽略错误”脚本 – 这将让你的脚本忽略来自gdb命令的错误。