在XCode 4中调试异常

Und*_*ion 6 debugging xcode exception

由于AVAudioRecorder实例上的方法调用,我很难到达抛出异常的底部.我设置了异常断点,但我无法从堆栈跟踪中收集任何有用的信息.抛出异常的点是在调用时:

[recorder prepareToRecord];

如果我关闭断点,应用程序运行正常,没有任何负面影响.录音机正常运行.需要明确的是,情况的具体情况并不那么重要.更多的情况是"在这样的情况下我应该做些什么才能解决问题?" 我看不到任何有关手头工具问题的方法.关于ACBaseCodec的文档似乎陈旧,并没有说明可能导致异常抛出的原因.

Debug Navigator中的堆栈跟踪:

Debug Navigator

从单个线程堆栈跟踪:

在此输入图像描述

有没有办法知道是什么导致了这个异常?

Ray*_*Fix 9

不幸的是,我认为AVAudioPlayer和AVAudioRecorder似乎在prepareTo中使用C++异常作为其正常处理流程的一部分.因此,如果在所有异常上启用中断,则没有真正的方法可以避免在那里停止.你可以继续继续并完成它.另一种可能的解决方法是仅启用Objective-C异常,因为它似乎抛出了C++异常.这就是我做的.对不起,这不是一个答案,为什么他们为prepare做准备决定...超出了我.


Jul*_*pek 1

如果程序在调试器处于活动状态时失败,则线程中可能存在竞争条件。另外,您可能想尝试将 NSZombieEnabled 设置为 true 或在 Instruments 中运行该程序,以查看是否有任何内存问题导致问题。记录器对象是否保留?

我见过一些实例,程序在没有调试器运行的情况下崩溃,但在调试器处于活动状态时运行正常,但我从未见过这样的情况。

调试器是否记录任何消息?