以下错误是什么意思?

tes*_*dtv 6 iphone xcode gdb

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) 
Run Code Online (Sandbox Code Playgroud)

bbu*_*bum 23

程序接收信号:"EXC_BAD_ACCESS".[切换到进程388]杀死目标时杀死错误(无论如何都要杀死):警告:"/ SourceCache/gdb/gdb-1472/src/gdb/macosx/macosx-nat-i​​nferior.c"第2179行中的错误" macosx_kill_inferior_safe":( os/kern)失败(0x5x)退出

注意错误在哪里; gdb已经坠毁.这可能是由于您的应用程序崩溃,但这些特定消息肯定对调试真正的问题没有用.

并且,更有可能的是,实际崩溃与对象的过度释放无关.也许是这样,但可能不是.

通常情况下,当GDB以这种方式崩溃时,这是因为你以一种gdb绊倒腐败的方式破坏堆或堆栈,试图弄清楚发生了什么.或者您的应用程序已进入gdb无法再与其通信的状态(在给定崩溃位置的情况下可能就是这种情况).

在这种情况下,有些事情要尝试:

  • 使用最新的开发工具?如果没有,请执行此操作并从干净重建您的应用程序.

  • 可以在模拟器和设备上重现崩溃吗?如果是这样,它可以在一个而不是另一个上正确调试吗?

  • 如果您在没有调试器的情况下运行应用程序,是否可以使其崩溃,然后从设备中提取崩溃日志?

  • 调试和非调试版本之间的行为是否会发生变化?这可能会极大地影响内存损坏.

  • 这真的开始发生了吗?如果是这样,你最近改变了什么?

想到另一招;

  • 尝试设置MallocScribble环境变量.这将在分配/解除分配时将值划分到内存中,并且通常至少会导致与内存损坏相关的崩溃器更早崩溃或者足够不同以捕获它.

  • 最后,我最后提出了其余的答案......他们不是*对*但他们也没有受到惩罚.这是**难题之一**.如果你作为一个相对较新的人一直在进行直接的开发并遇到这样的情况,过度释放的假设将是简单而自然的......并且当你试图弄清楚到底是怎么回事时完全令人费解. (5认同)