我知道一个相当多的标题。
然而,我似乎不断收到这些神秘的错误,GDB 向我显示的所有内容都是苹果代码的行号,那是爆炸性的。即
0x028235bd <+0025> jne 0x28235dd <_ZN2CA5Layer15collect_layers_EPNS0_17CollectLayersDataE+57>
0x028235bf <+0027> mov 0x4(%eax),%ecx
0x028235c2 <+0030> test %ecx,%ecx
0x028235c4 <+0032> js 0x28235dd <_ZN2CA5Layer15collect_layers_EPNS0_17CollectLayersDataE+57>
0x028235c6 <+0034> mov 0x8(%ebp),%edx
0x028235c9 <+0037> mov 0x78(%edx,%ecx,4),%edx <---- EXC_BAD_ACCESS
我只是想重申一下,我知道上面的内容表明已释放的对象正在被再次访问。然而问题是,当我没有堆栈跟踪甚至寄存器值时,如何调试它?
它不仅是 EXC_BAD_ACCESS,还有 SIGABRT 错误,否则我可以使用 NSZombieEnabled 技巧。
(进一步说明,此调用跟踪与 ViewController 等相关,因此调试这些的任何指针也会有所帮助)
再次感谢。
最佳答案
打开xCode,按command+6,点击底部的“+”按钮,选择“添加异常断点”,按完成。现在,如果抛出任何异常,xCode 将突出显示抛出该异常的代码行。
关于objective-c - 在iOS私有(private)代码中调试iOS信号异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343291/