我的C ++应用程序给了我一些奇怪的输出,但它运行完成,我想检查堆栈跟踪,但由于它不是segfaulting,因此更难确定它的位置。我已尝试在exit
,_exit
和abort
上设置断点,但是当我调用堆栈时,我会得到类似的内容
#0 0x00002aaaab1a7620 in exit () from /lib64/libc.so.6
#1 0x000000000041f19e in main ()
这可能是因为我的应用程序有一个用sig包装的perl前端,是否有另一种方法可以在完成时生成堆栈?
答案 0 :(得分:1)
这就是堆栈跟踪的样子。主调用在结尾处退出,并在出口内打印堆栈跟踪。你无法找到堆栈跟踪发生的事情。一旦找到发生的事情,就可以在那里获得堆栈跟踪并找出执行的执行方式。
在退出之前,您正在寻找的输出是什么,并且在您获得堆栈跟踪时该功能已经返回。因此,您需要在输出发生之前设置断点。然后你可以逐行查看代码,找出输出的哪一行。
答案 1 :(得分:0)
你是在调试中构建的吗?