跳过回溯中最内向的框架
Skip innermost frames in backtrace
我想在gdb中创建一个回溯(在脚本中)。命令bt 2
仅打印2个最内向的帧,而bt -2
仅打印最外面的帧。
我想做的是 skip 这是2个最内向的帧,并显示所有外部框架。我尝试了
up 2
bt
(以及类似的up-silently
,frame
,select-frame
),但不会影响bt
的输出。要明确,我想摆脱此输出中的第一个行:
#0 0x0000003167e0f33e in waitpid () from /lib64/libpthread.so.0
#1 0x00007f2779835de8 in print_trace() () at /path/to/MyAnalysis.cxx:385
#2 0x00007f2779836ec9 in MyAnalysis::getHistHolder(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) () at /path/to/MyAnalysis.cxx:409
#3 0x00007f27798374aa in MyAnalysis::execute() () at /path/to/MyAnalysis.cxx:599
#4 0x00007f2783a9670f in EL::Worker::algsExecute() () from /blah/lib/libEventLoop.so
...
有什么方法?
呼叫return
两次似乎有效,但是随后将应用程序以无效状态保留,所以我无法使用它。
您对" bt"的论点取决于当前存在的帧数。可能也可以直接在GDB中完成(不确定),但是此Python脚本确实可以做到这一点:
import gdb
class TopBt (gdb.Command):
""" tbt n Shows backtrace for top n frames """
def __init__ (self):
super(TopBt, self).__init__ ("tbt", gdb.COMMAND_DATA)
def framecount():
n = 0
f = gdb.newest_frame()
while f:
n = n + 1
f = f.older()
return n
def invoke (self, arg, from_tty):
top = int(arg[0])
btarg = -(TopBt.framecount() - top)
if btarg < 0:
gdb.execute("bt " + str(btarg))
TopBt()
将其保存到某些文件(tbt.py),将其源为GDB(源tbt.py)。现在您有了新的命令tbt。tbt n将为除顶n帧以外的所有框架打印回轨。
如果可以在某个预定的长度上限制堆栈,则可以提供一个明确的长列表,类似于以下最多40帧,从框架4开始:
frame apply level 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 43 -q frame
框架数字超出了可用的数字。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 回溯C++不打印函数,因此文件
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- catch框架有没有办法比较流或文件
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 使用Qt框架在c ++类中创建API调用
- 如何在ECS框架中更新组件数据和通知系统
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- 用于C++的静态二进制检测或二进制重写工具和框架
- GoogleMock是否仍然打算与任何测试框架一起使用?
- 带有框架的 QGraphicsTextItem 的 QPropertyAnimation 会使文本抖动
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 如何解释GDB中回溯的模板函数签名?
- 修改生成文件以简化框架 #include 路径
- 无敌框架并受到伤害等级
- 重新引发异常保留回溯
- 如何在提升构建中设置环境变量以进行提升单元测试框架?
- 使用 gtest 框架在单元测试代码中检查目标对象的私有变量的最佳实践是什么?
- 跳过回溯中最内向的框架