C语言 我如何从GDB脚本变量的堆栈跟踪存储符号名称



假设这是我的堆栈跟踪:

#0 f1 () at foo.c:n
#1 f2 () at foo.c:n
#2 f3 () at foo.c:n
#3 f4 () at foo.c:n

我希望能够在GDB脚本中做这样的事情:

printf "function %s called function %sn", $f1_name, $f2_name

这可能吗?是否有一个结构与这种元数据的地方?

最简单的方法是使用Python API。

还有一种更可怕的方法:使用"set logging"重定向到文件。然后,"bt"或者其他你喜欢的词。然后,撤销日志记录。使用"shell"命令将该文件重写为设置方便变量的gdb脚本。最后,"源"脚本。

我建议坚持使用Python方法。您可以在Python中编写一个方便的函数来很容易地公开这一点。

最新更新