エラー トレースなしでクラッシュするアプリがあります。デバッグすると何が起こっているかの一部を見ることができますが、どのオブジェクトが「ゾンビ化」しているのかわかりません。
Xcode 4 で NSZombie を有効にする方法を知っている人はいますか?
EXC_BAD_ACCESS のトラブルシューティングで同じ問題が発生し、Xcode 4.2 (iOS5 SDK に付属する最新のもの) で設定を見つけるのに苦労しました。Apple は物事を動かし続けており、設定はもはや以前の場所ではありません。
幸いなことに、シミュレーターだけでなく、デバイスでも機能することがわかりました。Xcode で [製品] メニューを開き、[スキームの編集] を選択してから、[診断] タブを選択する必要があります。そこに「ゾンビオブジェクトを有効にする」があります。選択してデバッガーで実行すると、二重にリリースされたオブジェクトが表示されます。楽しみ!
要するに
Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects
Product > Profile で Instruments を起動すると、"Zombies" という名前の "Trace Template" が表示されます。ただし、このトレース テンプレートは、現在のビルド先がシミュレーターである場合にのみ使用できます。iOS デバイスに設定されている場合は使用できません。
また、インストゥルメント ライブラリに実際の Zombies インストゥルメントがないことにも注意してください。ゾンビ トレース テンプレートは、実際には、「NSZombie 検出を有効にする」起動構成セットを含む割り当てインストゥルメントで構成されています。
実行可能ファイルに環境変数を設定し、(NSZombieEnabled = YES)
通常どおりアプリを実行/デバッグするだけです。ゾンビにメッセージを送信すると、アプリがクラッシュ/ブレークしてデバッガーとNSLog
メッセージが表示されます。
詳細については、次の CocoaDev ページをご覧ください: http://www.cocoadev.com/index.pl?NSZombieEnabled
また、このプロセスは、10.6 のリリースと Xcode および Instruments の次のバージョンではるかに簡単になります。ただ言って'。=)
製品 > プロファイルはインストゥルメントをポップアップ表示します。パネルからゾンビを選択して、夢中になろう。
製品に移動- スキーム - スキームの編集 - 引数 - 環境変数set NSZombieEnabled = YES
xcode 4.2 で
製品に移動 -> スキームを編集 -> [yourappname.app を実行] -> [診断] -> [Zombie オブジェクトを有効にする] をクリックします。
ここでは、Instruments と NSZombie を使用して iOS でメモリ クラッシュを見つけて修正する方法のビデオと説明を示します: http://www.markj.net/iphone-memory-debug-nszombie/
Xcode3.2.5およびSnowLeopard(Mac OS X 10.6)以降、Zombiesインスツルメントを介してコードを実行できますRun > Run with Performance Tool > Zombies
。これにより、特定のオブジェクトとその保持カウントをタイムラインで確認できます。
Xcode 4.5.2 では、Product -> Edit Scheme -> に移動し、[Diagnostics] タブで、Objective C と Enable Zombie Objects の間のチェック ボックスをオンにして、[OK] をクリックします。
XCode 4.0の場合:InstrumentsでNSZombieを検出するには、ターゲットとしてシミュレーターを選択します(デバイスでNSZomboeを検出できません)。Instruments(CMD + I)を実行し、「ゾンビ」トレーステンプレートを選択します。楽しみ。
ゾンビ ログを有効にするには、Xcode プロジェクトの実行可能ファイル グループにある実行可能ファイルをダブルクリックします。この時点で Arguments タブをクリックし、Variables to be set in the environment:
セクションで という変数を作成し、NSZombieEnabled
その値を に設定しますYES
。
実行可能ファイルの設定で、環境変数を追加しNSZombieEnabled
、値を に設定しますYES
。
ur XCODE (4.3) で、次に再生ボタン :) (実行)
select : スキームを編集
スキーム管理ウィンドウが開きます
[引数] タブをクリックします。
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
このビデオは、私が言おうとしていることを理解するのに役立ちます。