gpt4 book ai didi

c++ - 未使用调试器标志编译的代码发生段错误

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:24 30 4
gpt4 key购买 nike

我系统上的一个进程出现段错误。从核心文件中,我得到了以下信息。

#0  0x00007f8768c06cfb in TestDummy::work() () from libCont.so
#1 0x00007f8768bfb5ee in Test::work() () from libCont.so
#2 0x00007f8768c5fa7b in Test::worker_threads() () from libCont.so
#3 0x00007f873fffe830 in ?? ()
#4 0x0000000000000000 in ?? ()

请注意,我无法重新创建此段错误,我所拥有的只是系统上的这个核心文件,用于识别出了什么问题。注意:代码未使用调试器标志编译,即“g++ -g”,因此调试信息不​​可用。

我尝试过的我试图分解并读取完整的第 0 帧以识别确切的崩溃点,但没有帮助。

谁能告诉我进一步调试的方法?

最佳答案

What I tried I tried to dissemble and read complete frame 0 to identify the exact crash point but it didn't help

您不需要确定确切的崩溃点:GDB 已经告诉您它是什么:它是地址 0x7f8768c06cfb 处的指令。

可能说的是“尽管查看了反汇编,但我仍然无法理解是哪个源代码行导致了问题”。我们可以在这方面帮助您,但前提是您在问题中实际显示源代码和反汇编。

唯一的其他选择是:

  1. 找一个本地的大师,你可以向他展示源代码和反汇编,他会像我们一样帮助你,或者
  2. 按照 Lightness Races in Orbit 告诉你的去做:用完全相同的标志重建你的二进制文件,但同时添加 -g。假设你有一个封闭的构建并且可以在足够接近的状态下重建你的原始二进制文件(nm new-binary 的输出应该匹配 nm old-binary 的输出),GDB 将然后告诉你确切地址0x7f8768c06cfb对应的是哪一行。

注意:您实际上不必使用-g 重建整个 二进制文件。仅重建包含 TestDummy::work() 的源代码并重新链接 libCont.so 就足够了。

关于c++ - 未使用调试器标志编译的代码发生段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34441131/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com