我遇到了许多使用最新版本的 XCode 的实例(我相信这从 4.2 左右开始发生),其中抛出异常时的堆栈跟踪非常缺乏细节。
这里的截图说明了一种这样的情况;事实上,这个场景至少有一些上下文(它告诉我它发生在 JKArray 类中),很多时候我只得到“内部”堆栈项(线程中只有 2-3 个条目,没有一个驻留在用户代码或我可以查看的任何内容)。即使在这个例子中,我也不知道 JKArray 是在哪里分配或释放的,所以我不知道是什么实例或问题出在哪里。
想法:
- 我尝试添加一个通用的“异常”断点
- 输出中有一些次要信息;在这种情况下:“ malloc:* 对象 0x10e18120 的错误:未分配被释放的指针 *在 malloc_error_break 中设置断点以进行调试”。但是,这样做并没有让我更进一步,因为断点与异常在同一个堆栈中被击中......
- 我试过切换到另一个调试器
- 我试过使用我自己的自定义异常处理程序
- 我尝试使用 Profiler 来查找泄漏。我找不到任何泄漏。
无论我做什么,我似乎都无法隔离困扰我的应用程序的问题。此外,问题似乎每次都不完全相同,可能是由于我的应用程序中的大量并发......所以我没有解决问题的好方法。
编辑:在这个特殊异常的情况下,我最终找到了原因。我曾尝试 [释放] 和 [autoreleased] d 的对象。但是,所有这些都发生在我的代码中;我不明白为什么 XCode 不会给我一个像样的堆栈跟踪来帮助我找到问题,而不是强迫我搜索我的整个应用程序......