1

私は平均して (~ 20,000 行のコード、Objective-C と C++ が混在)、EXC_BAD_ACCESS エラーを突き止めるために戦っています。

私はすべての一般的な手法 (NSZombie の有効化、エッジのガードなど) を試しました。これまでのところ、解放されたオブジェクトにアクセスする可能性と、ダブルフリー エラーを除外しました。

何かが、本来あるべきではないメモリ空間に書き込まれているようです。しかし、多くのメモリ エラーが常に発生しているわけではなく、常に同じ場所でクラッシュしているわけでもありません。(「解放後にオブジェクトが変更されました」というメッセージが表示されることがあります)。

場合によっては、上書きされたメモリがallocatorに属し、malloc または free() でクラッシュします。

もちろん、アプリの一部の変更がバグの動作に影響を与える可能性があります。コードの一部をコメント アウトしようとすると、エラーが表示される頻度が低くなるため、見つけにくくなります。

最後に、valgrindの使用を検討していましたが、使用した人はすべてシミュレーターで動作したようです。しかし、私のコードは実際のデバイスで実行する必要があります (一部のコードはARM固有です)

このようなエラーをデバッグする方法に関する一般的なヒントはありますか?

注: アプリはビデオ処理を伴うため、使用されるメモリ量はかなり大きくなります。

4

2 に答える 2

0

XCode で使用できる特別なツールがいくつかあります。コードを分析するためにそれらを使用することができます。 http://developer.apple.com/library/mac/#featuredarticles/StaticAnalysis/index.html 無効なオブジェクトが使用されている場合は警告が生成されるため、問題を見つけるのに役立ちます。

于 2012-04-18T13:05:19.230 に答える
0

C++ コードが問題の原因であると思われる場合は、iPhone プロジェクトから C++ をコピーして、Mac プロジェクトを作成することができます。これにより、さまざまなストレス テストを設定できます。また、valgrind も使用できるはずです。

于 2012-04-18T13:11:47.667 に答える