【问题标题】:Hide stack frames from certain source files in LLDB隐藏 LLDB 中某些源文件的堆栈帧
【发布时间】:2015-12-16 20:09:11
【问题描述】:

当我的程序在使用 LLDB 的调试器中暂停时,我想隐藏源自某些源文件(或库)的堆栈帧,使其不会出现在回溯中。这些框架通常对应于我不在调试过程中的标准库函数。

在类似的注释中,我确实找到了target.process.thread.step-avoid-regexp,它可以让我避免进入选定的帧。但是,我还想在 backtrace 列表中抑制这些帧,并且在上下移动 bracktrace 时避免显示相同的帧。

似乎可以修改format of the backtrace,但不能有条件地隐藏某些帧。

【问题讨论】:

    标签: debugging lldb


    【解决方案1】:

    在 lldb 中没有执行此操作的工具。随时向 lldb.llvm.org 的错误报告者提交功能请求。

    OTOH,编写由 Python 支持的 lldb 命令会非常简单,这些命令会像您建议的那样呈现熟化的回溯。唯一不明显的一点是,您获得帧格式驱动打印的方式是:

    ss = lldb.SBStream()
    frame.GetDescription(ss)
    

    然后您可以使用以下命令将框架添加到命令的结果对象中:

    result.PutCString(ss.GetData())
    

    唯一很难做到的事情是重写帧编号,这样它就不会显示您遗漏了帧的位置。如果您只是假装输出中的编号不同,则其他采用帧编号的 lldb 命令都不会按预期工作。所以这不是一个好主意......但这可能是小事,而且实际上可能很高兴看到丢失帧的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 2010-09-28
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多