当我的程序在使用LLDB的调试器中暂停时,我想隐藏源自某些源文件(或库)的堆栈帧,使其不会出现在回溯中。这些框架通常对应于我不在调试过程中的标准库函数。
在类似的说明中,我确实找到了target.process.thread.step-avoid-regexp
,这使我可以避免单步进入选择框架。但是,我想在回溯列表中抑制这些帧,并避免在向上和向下移动包线时显示相同的内容。
似乎可以修改format of the backtrace但不能有条件地隐藏某些帧。
答案 0 :(得分:0)
在lldb中没有这样做的工具。随意向lldb.llvm.org的bug报告者提交功能请求。
OTOH,编写支持Python的lldb命令会非常简单,这些命令会显示您所建议的熟回溯。唯一不明显的一点是,您获得帧的帧格式驱动打印的方式是:ss = lldb.SBStream()
frame.GetDescription(ss)
然后,您可以使用以下命令将框架添加到命令的结果对象中:
result.PutCString(ss.GetData())
唯一难以做的就是重写帧编号,这样它就不会显示你遗漏帧的位置。如果您只是假装输出中的编号不同,那么采用帧编号的其他lldb命令都不会按预期工作。所以这不是一个好主意......但这可能是一个小问题,看一眼丢失帧的情况实际上可能会很好。