隐藏LLDB中某些源文件的堆栈帧

时间:2015-12-16 20:09:12

标签: debugging lldb

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

在类似的说明中,我确实找到了target.process.thread.step-avoid-regexp,这使我可以避免单步进入选择框架。但是,我想在回溯列表中抑制这些帧,并避免在向上和向下移动包线时显示相同的内容。

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

1 个答案:

答案 0 :(得分:0)

在lldb中没有这样做的工具。随意向lldb.llvm.org的bug报告者提交功能请求。

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

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

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

result.PutCString(ss.GetData())

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