1

假设这是我的堆栈跟踪:

#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

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

4

1 回答 1

0

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

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

不过,我建议坚持使用 Python 方法。您可以在 Python 中编写一个方便的函数来轻松地公开这一点。

于 2013-05-23T17:33:08.443 回答