gdb调试没有符号表被读取_GDB调试具有特定调用堆栈的缺失符号表的coredump

我得到了这个奇怪的崩溃,我不知道如何调试核心转储,因为调用堆栈由于某种原因缺少符号信息,除了最后一个函数:

#0 BIH::intersectRay<:mapraycallback> (this=0x7f47b8339608, r=..., intersectCallback=..., maxDist=@0x7f493af8383c: 0, stopAtFirst=true, los=) at ../BIH.h:223

#1 0x000000307ff00000 in ?? ()

#2 0x7ff0000000000000 in ?? ()

#3 0x0000000000000030 in ?? ()

#4 0x000000307ff00000 in ?? ()

#5 0x7ff0000000000000 in ?? ()

#6 0x0000000000000030 in ?? ()

#7 0x000000307ff00000 in ?? ()

#8 0x7ff0000000000000 in ?? ()

#9 0x0000000000000030 in ?? ()

#10 0x000000307ff00000 in ?? ()

#11 0x7ff0000000000000 in ?? ()

#12 0x0000000000000030 in ?? ()

#13 0x000000307ff00000 in ?? ()

#14 0x7ff0000000000000 in ?? ()

#15 0x0000000000000030 in ?? ()

#16 0x000000307ff00000 in ?? ()

#17 0x7ff0000000000000 in ?? ()

#18 0x0000000000000030 in ?? ()

#19 0x000000307ff00000 in ?? ()

#20 0x7ff0000000000000 in ?? ()

#21 0x0000000000000030 in ?? ()

#22 0x000000307ff00000 in ?? ()

....

#749 0x7ff0000000000000 in ?? ()

#750 0x0000000000000030 in ?? ()

#751 0x000000307ff00000 in ?? ()

#752 0x7ff0000000000000 in ?? ()

#753 0x0000000000000030 in ?? ()

#754 0x000000307ff00000 in ?? ()

#755 0x7ff0000000000000 in ?? ()

#756 0x0000000000000030 in ?? ()

#757 0x000000307ff00000 in ?? ()

#758 0x7ff0000000000000 in ?? ()

#759 0x0000000000000030 in ?? ()

#760 0x000000307ff00000 in ?? ()

#761 0x7ff0000000000000 in ?? ()

#762 0x0000000000000030 in ?? ()

#763 0x000000307ff00000 in ?? ()

#764 0x03010102464c457f in ?? ()

#765 0x0000000000000000 in ?? ()`

(gdb) info frame 0

Stack frame at 0x7f493af83830:

rip = 0x930f0b in BIH::intersectRay<:mapraycallback> (../BIH.h:223); saved rip = 0x307ff00000

called by frame at 0x7f493af83838

source language c++.

Arglist at 0x7f493af83438, args: this=0x7f47b8339608, r=..., intersectCallback=..., maxDist=@0x7f493af8383c: 0, stopAtFirst=true, los=

Locals at 0x7f493af83438, Previous frame's sp is 0x7f493af83830

Saved registers:

rbx at 0x7f493af837f8, rbp at 0x7f493af83800, r12 at 0x7f493af83808, r13 at 0x7f493af83810, r14 at 0x7f493af83818, r15 at 0x7f493af83820, rip at 0x7f493af83828

#1 0x000000307ff00000 in ?? ()

No symbol table info available.

(gdb) info frame 1

Stack frame at 0x7f493af83838:

rip = 0x307ff00000; saved rip = 0x7ff0000000000000

called by frame at 0x7f493af83840, caller of frame at 0x7f493af83830

Arglist at 0x7f493af83828, args:

Locals at 0x7f493af83828, Previous frame's sp is 0x7f493af83838

Saved registers:

rip at 0x7f493af83830

#2 0x7ff0000000000000 in ?? ()

No symbol table info available.

(gdb) info frame 2

Stack frame at 0x7f493af83840:

rip = 0x7ff0000000000000; saved rip = 0x30

called by frame at 0x7f493af83848, caller of frame at 0x7f493af83838

Arglist at 0x7f493af83830, args:

Locals at 0x7f493af83830, Previous frame's sp is 0x7f493af83840

Saved registers:

rip at 0x7f493af83838

#3 0x0000000000000030 in ?? ()

No symbol table info available.

(gdb) info frame 3

Stack frame at 0x7f493af83848:

rip = 0x30; saved rip = 0x307ff00000

called by frame at 0x7f493af83850, caller of frame at 0x7f493af83840

Arglist at 0x7f493af83838, args:

Locals at 0x7f493af83838, Previous frame's sp is 0x7f493af83848

Saved registers:

rip at 0x7f493af83840

#4 0x000000307ff00000 in ?? ()

No symbol table info available.

(gdb) info frame 4

Stack frame at 0x7f493af83850:

rip = 0x307ff00000; saved rip = 0x7ff0000000000000

called by frame at 0x7f493af83858, caller of frame at 0x7f493af83848

Arglist at 0x7f493af83840, args:

Locals at 0x7f493af83840, Previous frame's sp is 0x7f493af83850

Saved registers:

rip at 0x7f493af83848

代码使用-g -fvar-tracking -O2 -march=native编译。

我有各种崩溃的各种转储,所有崩溃都有符号表工作,并提供相关的调用堆栈和信息,但由于某种原因,这种特定的崩溃是神秘的。

我注意到的一件事是相同的地址编号一遍又一遍地重复,可能是某些无限循环或一些腐蚀或溢出堆栈的递归?

如果是这样,是否有任何方法可以获得调用堆栈中最顶层的函数(例如,任何方式超出帧#765或在触发溢出之前获取调用的函数)?

我无法将$sp或jump设置为任何地址,因为我无法调试并逐步执行实时程序,只需分析核心转储。

我无法复制这次崩溃,它不时发生在生产中。 valgrind也是不可能的。

是否有任何g++编译器选项或gdb标志可以帮助我解决这个问题?

任何有关如何调试此类问题的指示表示赞赏(如果可能的话)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值