iphone - 追踪 iPhone 上的越界访问

标签 iphone c++ objective-c ios memory

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

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

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

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

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

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

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

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

最佳答案

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

关于iphone - 追踪 iPhone 上的越界访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10209455/

相关文章:

objective-c - 当 UIScrollview 作为 subview 存在时,UIWebview scrollsToTop 不起作用

ios - 从 AppDelegate 向 ViewController 发送通知

ios - xCode 自动布局在 5 和 5s 上不同

ios - 在 Xcode 7.2 中如何在没有苹果开发者程序且没有连接设备的情况下生成 IPA 文件?

python - 使用 python 编译 pin 工具时出错,出现错误 C2872 : 'UINT32' : ambiguous symbol

c++ - 为什么 g++ 不生成 "raw"符号?

iphone - 根据设备类型选择不同的 Storyboard

objective-c - 拼图uiimage不规则裁剪

c++ - 为什么要编译(在初始化之前在函数中使用)?

ios - 是否可以在 UITabBarController 中显示 SFSafariViewController?