2009-08-24 9 views
1

Objective Cプログラムにバグがあり、いくつかのライブラリメソッドのヒップが深くなり、すべてのライブラリメソッドがメインにスタックされますXcodeが私に与えたものから触れていない)。だから私は少し謎がある。Obj-Cのバグを巧妙に追跡する方法

私は取得していますエラーは次のとおりです。今

Program received signal: “EXC_BAD_ACCESS”. 

、私は、これはどこかに私が何か何回も、またはそのような何かを解放するよということを意味することを確信しています。これはseg-faultの目的となるCバージョンです。

私のコードでは起こっていないので、私が二重にリリースしているものを追跡する巧妙な方法がありますか?またはコード検査が最善の策ですか?

ありがとうございました。

答えて

2

EXC_BAD_ACCESSは、予期しない方法で特定のメモリチャンクにアクセスしようとしていることを意味します。たとえば、もはや有効なオブジェクトを表していないメモリ参照にメッセージを送信しようとするとします。セグメンテーション違反とは異なりますが、関連しています。

オーバーリリースされたオブジェクトのデバッグに関する提案については、this related SO questionを参照してください。 NSZombieはあなたのために不思議に作用します。ゾンビ機器を使用してプロセスを簡素化し、Xcodeスタティックアナライザを使用して、コンパイル時にこのようなエラーを見つけるのを手伝ってください。

http://www.cocoadev.com/index.pl?DebuggingTechniquesおよびthis Apple Tech Noteもご覧ください。

+1

また、NULLで終わらないchar * c文字列を持つ場合にEXC_BAD_ACCESSエラーを取得し、ヌル終了文字として使用しようとすることもできます。それは私を永遠に追跡して追跡した。 –

+0

ああ、はい、NSZombie、私はそれについて忘れてしまいました!ありがとう! –

関連する問題