エラートレースなしでクラッシュするアプリがあります。私がデバッグしている場合、何が起こっているのかの一部を見ることができますが、どのオブジェクトが「ゾンビ化」しているのか理解できません。
Xcode 4でNSZombieを有効にする方法を知っている人はいますか?
私はトラブルシューティングEXC_BAD_ACCESSで同じ問題に遭遇し、Xcode 4.2(iOS 5 SDKに付属する最新のもの)で設定を見つけるのに苦労しました。 Appleは物事を動かし続けており、設定はもはや以前の場所ではありません。
幸いなことに、私はそれを見つけました、そしてそれはただのシミュレータではなく、装置のために働きます。 XcodeでProductメニューを開き、Edit schemeを選択してからDiagnosticsタブを選択する必要があります。そこに "Enable Zombie Objects"があります。一度選択してデバッガで実行すると、二重解放されたオブジェクトが表示されます。楽しい!
要するに
Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects
Product> ProfileがInstrumentsを起動すると、 "Zombies"という名前の "Trace Template"があるはずです。ただし、このトレーステンプレートは、現在のビルド先がシミュレータの場合にのみ使用できます。送信先をiOSデバイスに設定している場合は使用できません。
また注意すべきもう1つのことは、楽器ライブラリには実際のゾンビ楽器がないということです。ゾンビトレーステンプレートは、実際には "Enable NSZombie detection"起動設定セットを持つAllocationsインストゥルメントで構成されています。
実行可能ファイル(NSZombieEnabled = YES)
に環境変数を設定してから、通常通りにアプリケーションを実行/デバッグするという簡単なことです。ゾンビにメッセージを送ると、アプリケーションはクラッシュしてデバッガにブレークし、NSLog
にメッセージが送られます。
詳細については、このCocoaDevページをチェックしてください。 http://www.cocoadev.com/index.pl?NSZombieEnabled
また、このプロセスは10.6のリリースとXcodeとInstrumentsの次のバージョンでずっと簡単になるでしょう。ただ言って'。 =)
製品>プロフィールがインストゥルメントをポップアップします。パネルからゾンビを選択して、ナッツを倒します。
製品 - 方式 - 編集方式 - 引数 - 環境変数 set NSZombieEnabled = YESに進んでください。
Xcode 4.2では
ジャンプ - 製品 - >スキームの編集 - > Run yourappname.appをクリック - > Diagonostics - > Enable Zombie objectをクリックする。
これが、iOSでのメモリクラッシュを見つけて修正するためのInstrumentsとNSZombieの使い方のビデオと説明です。 http://www.markj.net/iphone-memory-debug-nszombie/
Xcode 3.2.5およびSnow Leopard(Mac OS X 10.6)以降では、ZombiesのインストゥルメントRun > Run with Performance Tool > Zombies
を通じてコードを実行できます。これにより、特定のオブジェクトとそれらの保持数をタイムライン上で確認できます。
Xcode 4.5.2では、製品 - >スキームの編集 - >の順に選択し、DiagnosticsタブでObjective CとEnable Zombie Objectsの間にあるチェックボックスをオンにして、OKをクリックします。
XCode 4.0の場合:InstrumentsでNSZombieを検出するには、ターゲットとしてシミュレータを選択します(デバイス上でNSZomboeを検出することはできません)。 Instruments(CMD + I)を起動して "Zombies"トレーステンプレートを選択してください。楽しい。
Zombieロギングを有効にするには、Xcodeプロジェクトの実行可能ファイルグループ内の実行可能ファイルをダブルクリックします。この時点で、[引数]タブをクリックし、Variables to be set in the environment:
セクションでNSZombieEnabled
という変数を作成し、その値をYES
に設定します。
実行可能ファイルの設定に環境変数NSZombieEnabled
を追加し、値をYES
に設定します。
ur XCODE(4.3)では再生ボタンの隣:)(実行)
選択:スキームを編集
スキーム管理ウィンドウが開きます
引数タブをクリックします
1 - 起動時に渡された引数 - 2 - 環境変数
(2-環境変数)の場所の中名前:NSZombieEnabled
値:YES
そしてそれは…….
NSZombieEnabledはBAD_ACCESSのデバッグに使用されます。
xcodeのスキームシートからNSZombiesEnabled環境変数を有効にします。
Click on Product⇒Edit Scheme to open the sheet and set the Enable Zombie Objects check box
これ ビデオ は私が言おうとしていることを見るのを助けるでしょう。