如何在GDB脚本变量中存储堆栈跟踪中的符号名称?

时间:2013-04-05 19:25:02

标签: 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 %s\n", $f1_name, $f2_name

这可能吗?有这种元数据的某个结构吗?

1 个答案:

答案 0 :(得分:0)

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

还有一种更可怕的方式:使用“set logging”重定向到文件。然后,“bt”或其他任何你喜欢的东西。然后,撤消日志记录。使用“shell”命令将文件重写为设置便捷变量的gdb脚本。最后,“源”脚本。

我建议坚持使用Python方法。您可以在Python中编写一个便利函数来轻松地公开它。