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

标签 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

这可能吗?某处是否有包含此类元数据的结构?

最佳答案

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

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

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

关于c - 如何将堆栈跟踪中的符号名称存储在 GDB 脚本变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15841935/

相关文章:

将字符串 strcmp() 函数与字符串的 2d 指针进行比较?

子进程不会因kill(pid_t, SIGTERM)而死亡

c++ - 在 GDB 中查看 GCC 优化中间体?

linux-kernel - 使用 gdb 进行远程 Linux 内核调试时未命中断点

C 计算字符串中 n 长度单词的出现次数

c - 如何在C中伪造用户输入

c - 是什么让 SPI 比 I2C 协议(protocol)更快

c - 释放内存(或分配)时出现问题

gdb - 如何在写入名称特定的特定文件时停止gdb中的程序

c++ - 为什么0xCF8端口无法访问?