5

私のコードには(私の意見では)非常に難しい問題があります。コード内のさまざまな場所でランダムにクラッシュします。プロジェクトはARCプロジェクトです。

したがって、私のプログラムは次のメッセージでときどきクラッシュします。

malloc: *** error for object 0xd2dd8b0: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

すでにブレークポイントを設定しましmalloc_error_breakたが、そこから情報を取得できません。コードがクラッシュすると、XCodeはコード内で発生した場所を示します。しかし、すでに述べたように、クラッシュはランダムであり、常に発生するとは限りません。しかし、クラッシュはコードの特定の行に集中しているように見えます。

ここで、xcodeに付属している機器を使用してデバッグしたいと思いました。少しグーグルした後、stackoverflowで次のものを見つけました:Xcode 4でNSZombieEnabledを設定するにはどうすればよいですか?およびXcodemallocエラー

したがって、最初のリンクは、xcodeの実行ボタンをクリックして[プロファイル]を選択することにより、xcode自体からゾンビ検出を開始する方法を説明しています。私が抱えている問題は、私のバージョンのxcode(4.2)でトレースドキュメントのテンプレートを選択するときに「ゾンビ」が見つからないことです。しかし、xcodeの外部(たとえばファインダーから)でInstrumentsを起動すると、ゾンビを選択できます。

さて、これが私がしたことです:

1)ファインダーからインストゥルメントを起動し、プロファイル「ゾンビ」を選択します。

2)iphoneシミュレーターのxcodeからiphoneアプリを起動します(通常の実行(プロファイルまたはデバッグではない))。

3)Instrumentsの「ChooseTarget」->「Attachtoprocess」->「iPhoneSimulator(57529)」。

4)楽器は何かを取り戻し始めます(私はそれが何をするのか理解できません)。

5)アプリがクラッシュするまでアプリをいじり始めます。

最終的にアプリがクラッシュします。アプリをクラッシュさせた後のインストルメントのスクリーンショットは次のとおりです。 ここに画像の説明を入力してください

私の質問:

1)ゾンビは私の問題に適していますか、それとも別の分析ツールを使用する必要がありますか?

2)クラッシュ後の出力にある楽器は何を教えてくれますか?

4

1 に答える 1

6

問題の説明から判断すると、クラッシュはゾンビオブジェクトへのアクセス以外の何かによって引き起こされます。アプリが割り当て解除された(ゾンビ)オブジェクトにアクセスすると、ゾンビテンプレートを使用すると、Instrumentsは次のようなメッセージを表示します。

ここに画像の説明を入力してください

于 2012-03-06T20:31:18.997 に答える