1

我平均工作(约 20k 行代码,Objective-C 与 C++ 混合),我正在努力寻找 EXC_BAD_ACCESS 错误。

我已经尝试了所有常见的技术(比如启用 NSZombie、保护边缘等)。到目前为止,我已经排除了访问已释放对象的可能性,以及双释放错误。

似乎有些东西写在不应该写的内存空间上。但是,正如许多内存错误一样,它不会一直发生,也不会总是在同一个地方崩溃。(有时我会收到“对象在被释放后被修改”的消息)。

有时,被覆盖的内存属于分配器,它在 malloc 或 free() 上崩溃。

而且,当然,应用程序中的某些更改可能会影响错误的行为——如果我尝试注释掉部分代码,错误出现的频率就会降低,因此更难找到它。

最后,我一直在研究使用valgrind,但似乎所有使用它的人都在模拟器上工作。但我的代码必须在实际设备上运行(有些代码是ARM特定的)

是否有关于如何调试此类错误的一般提示

注意:该应用程序涉及视频处理,因此使用的内存量相当大。

4

2 回答 2

0

If you feel that the C++ code is causing the issue you could copy the C++ out of your iPhone project and create a Mac project. With this you could set up various stress tests. And, you should be able to use valgrind as well.

于 2012-04-18T13:11:47.667 回答
0

XCode 上有一些特殊的工具可用。您可以尝试使用它们来分析您的代码。 http://developer.apple.com/library/mac/#featuredarticles/StaticAnalysis/index.html 它会在使用无效对象的情况下产生一些警告,以便帮助您找到问题。

于 2012-04-18T13:05:19.230 回答