以下错误信息是什么意思?

6
Program received signal:  “EXC_BAD_ACCESS”.
[Switching to process 388]
kill
error while killing target (killing anyway): warning: error on line 2179 of "/SourceCache/gdb/gdb-1472/src/gdb/macosx/macosx-nat-inferior.c" in function "macosx_kill_inferior_safe": (os/kern) failure (0x5x)
quit

The Debugger has exited with status 0.(gdb) 

这绝对是一个非常现实的问题;我见过这样的情况,那几乎就是唯一的线索。很难。 - bbum
3个回答

23
程序接收到信号:“EXC_BAD_ACCESS”。[切换到进程388]在杀死目标时出现错误(仍然进行杀死): 警告:在“/SourceCache/gdb/gdb-1472/src/gdb/macosx/macosx-nat-inferior.c”的第2179行出现错误,函数名为“macosx_kill_inferior_safe”:(os/kern)失败(0x5x)退出。
请注意错误的位置; gdb已崩溃。这可能是由于应用程序崩溃,但该特定消息肯定对调试实际问题没有用。
更有可能的是,实际崩溃与对象过多释放无关。也许是这样,但很可能不是。
通常,当GDB以这种方式崩溃时,这是因为您以一种使gdb在尝试弄清楚发生了什么般的情况下跌入损坏堆栈的堆栈中,或者您的应用程序已进入gdb无法再与之通信的状态(考虑到崩溃位置),导致gdb出现故障。
在这种情况下,可以尝试以下几点:
  • 使用最新的开发工具吗?如果没有,请这样做并从头开始重建您的应用程序。
  • 模拟器和设备上都可以重现崩溃吗?如果可以,可以在其中一个上适当地进行调试吗?
  • 如果您在没有调试器的情况下运行应用程序,可以使其崩溃,然后从设备中提取崩溃日志吗?
  • 调试和非调试版本之间的行为是否有所改变?这可能会大大影响内存损坏。
  • 这刚开始发生了吗?如果是这样,请问您最近做了什么更改?
想到另一个技巧;
  • 尝试设置MallocScribble环境变量。这将在内存分配/释放时涂写值,可以使内存损坏相关的崩溃更早地崩溃或以不同的方式崩溃,从而更容易发现问题。

  • 5
    我最终点赞了其他回答...它们不是“正确”的,但也不会受到惩罚。这是其中一个“棘手的错误”。如果你是一个相对新手,一直在进行着直接的开发工作,并遇到了这样的情况,过度释放的假设会很容易和自然地出现,而且在尝试弄清楚到底发生了什么时,这种假设会让人非常困惑。 - bbum

    1

    EXC_BAD_ACCESS通常意味着您正在尝试访问不再存在的内容。我们需要您的堆栈转储和可能一些代码来帮助您解决问题。


    1
    EXC_BAD_ACCESS 只是表示有时候出现了内存损坏。在这种情况下,调试器崩溃意味着原始应用程序中的崩溃可能不是典型的保留/释放问题。 - bbum
    1
    @6NSString:调试器是一个程序。程序可能会崩溃。因此,调试器也可能会崩溃。这可能是gdb的错误,也可能是程序的错误,或者两者都有——提问者的下一步是找出问题所在。 - Peter Hosey
    3
    调试器是一个有漏洞的程序。它还必须穿越经常失控的应用程序的内存。有时,这意味着遇到损坏的数据结构,有时损坏对于调试器来说太多了,导致它崩溃。 - bbum
    这就是我的意思,gdb崩溃了,但如果它正在调试没有破坏内存的代码,它可能不会崩溃。 - jakev
    当然可以(顺便说一下,我没有给你的回答投反对票),但是EXC_BAD_ACCESS意味着一件非常简单的事情;你试图将内存中的垃圾块用作有效地址,并且解除引用导致了崩溃。这并不意味着某些东西不存在;如果我执行["bob's your uncle" length],它很可能会因为EXC_BAD_ACCESS而崩溃。 - bbum
    显示剩余2条评论

    0

    引用一位同事的话,“某个地方出了问题”。

    这意味着您尝试访问一个不再有效的指针。也许您忘记保留对象或释放了多次?


    1
    不对——这个序列意味着gdb崩溃了。应用程序可能首先崩溃,这是触发器,但是发布的内容没有给出确切的错误信息。调试器崩溃可能意味着应用程序破坏了内存,超出了简单的过度释放。 - bbum

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接