【问题标题】:Gdb get frame's function namegdb 获取框架的函数名
【发布时间】:2013-09-29 21:13:09
【问题描述】:

我正在寻找一种从 GDB 中的帧信息中获取当前函数名称的方法。那可能吗?如果是,如何找到为特定框架设置的其他变量?

基本上,我使用的是在运行bt 命令时每行开头显示的相同名称。

【问题讨论】:

  • “get”是什么意思?在脚本中获取?通过 API?绑在信鸽的腿上?
  • 访问它以在define 块中进行比较。获取可以与 gdb 脚本中的地址或名称字符串进行比较的内容。
  • 最近的 gdb 支持 Python。我不知道获取框架名称的确切 api,但您可以从 python 支持开始...

标签: debugging gdb


【解决方案1】:

使用普通的 gdb CLI 很难做到这一点。您必须使用日志记录将“帧”的输出写入文件;然后对文件进行处理以提取名称并将其转换为 gdb 脚本;然后“获取”生成的脚本。

如果您有一个支持 Python 的 gdb,那么这很容易。使用 gdb.selected_frame() 获取选定的帧。那么名称就在框架的功能符号中:

name = gdb.selected_frame().name()

如果需要,您可以通过各种方式将其公开给 CLI;但最简单的可能是将它包装在一个方便的函数中。有关这方面的信息,请参阅文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多