XcodeでNSZombieを有効にする方法は?


302

エラートレースなしでクラッシュするアプリがあります。デバッグすると何が起こっているのかはわかりますが、「ゾンビ化」しているオブジェクトがわかりません。

Xcode 4でNSZombieを有効にする方法を誰かが知っていますか?

回答:


440

環境変数は「スキーム」の一部になりました。

スキームを編集してゾンビをオンにするには:

  • 「製品」メニューから「スキームの編集」を選択します。

  • 左側のパネルの「Run Foo.app」ステージに移動し、右側の「Arguments」タブに移動します。

  • Xcode 3の場合と同様NSZombieEnabledに、「環境変数」セクションに追加して、値をYESに設定します。


Xcode 4.1以降では、「実行」ステージの「診断」タブに「ゾンビオブジェクトを有効にする」ためのチェックボックスもあります。


Xcode 6.4の場合:

スクリーンショット


5
デバイス上の割り当て解除されたオブジェクトの呼び出しを中断しませんか?それを実現する方法はありますか?
jjxtra

95
4.2で再び変更されました。以下の私の回答を参照してください。[製品]
Moshe Kravchik

Xcodeでは、上部(最後の1つ)の[ヘルプ]メニューで[スキームの編集]を検索すると、どのバージョンでも毎回正しい方向に移動します。
unom

アプリでこのNSZombieEnabled機能を有効にすると、アプリを解放して保存する必要があります。私がこの機能を有効にしたときにストアにリリースするのは良い習慣ではないと言っている投稿を見たからです。
SURESH SANKE、2015

2
Xcode 6.1では、新人の場合、メニューの[製品]> [スキーム]> [スキームの編集]> [診断]タブ> [チェックボックスゾンビオブジェクトを有効にする
Joshua Dance

146

EXC_BAD_ACCESSのトラブルシューティングで同じ問題が発生し、Xcode 4.2(iOS5 SDKに付属する最新の設定)で設定を見つけるのに苦労しました。Appleは物事を動かし続け、設定はかつてあった場所ではなくなりました。

幸い、私はそれを見つけました。それはシミュレータだけでなく、デバイスでも機能します。Xcodeで[Product]メニューを開き、[Edit scheme]を選択して、[Diagnostics]タブを選択する必要があります。そこに「ゾンビオブジェクトを有効にする」があります。選択してデバッガーで実行すると、二重解放オブジェクトが示されます。楽しい!

要するに

Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects

2
Xcodeでは、上部(最後の1つ)の[ヘルプ]メニューで[スキームの編集]を検索すると、どのバージョンでも毎回正しい方向に移動します。
unom

43

Product> ProfileがInstrumentsを起動すると、「Zombies」という名前の「Trace Template」が表示されます。ただし、このトレーステンプレートは、現在のビルドの宛先がシミュレータの場合にのみ使用できます。宛先をiOSデバイスに設定している場合は使用できません。

また、楽器ライブラリには実際のゾンビ楽器は存在しないことにも注意してください。ゾンビトレーステンプレートは、実際には、「NSZombie検出を有効にする」起動構成セットが設定されたAllocations機器で構成されています。


13
「ただし、このトレーステンプレートは、現在のビルド先がシミュレータの場合にのみ使用できます」。ありがとうございました!
ajh158

ありがとう、それが私が探していたものです!
クリフリバウド

Xcodeでは、上部(最後の1つ)の[ヘルプ]メニューで[スキームの編集]を検索すると、どのバージョンでも毎回正しい方向に移動します。
unom

25

これは、実行可能ファイルに環境変数を設定し、(NSZombieEnabled = YES)通常どおりアプリを実行/デバッグするだけの簡単なことです。ゾンビにメッセージを送ると、アプリはデバッガーにクラッシュ/ブレークしNSLog、メッセージが表示されます。

詳細については、このCocoaDevページを確認してください。http//www.cocoadev.com/index.pl? NSZombieEnabled

また、このプロセスは10.6のリリースとXcodeとInstrumentsの次のバージョンで非常に簡単になります。ただ言って'。=)


完全に同意。新しいゾンビの楽器はとてもいいです。
クインテイラー、

22

Product> Profileは、Instrumentsをポップアップします。パネルからゾンビを選択し、ナッツを移動します。


5
私は間違いなく、Xcodeの4.02を実行し、それを見るために頑張り言うと思います@jluebbert
garageàtrois

16

製品に移動-スキーム-スキームの編集-引数-環境変数NSZombieEnabled = YESを設定

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

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


12

Xcode 4.2

Goto、Product->スキームの編集-> Run yourappname.app-> Diagonostics->ゾンビオブジェクトを有効にするをクリックします。



6

Xcode 3.2.5およびSnow Leopard(Mac OS X 10.6)以降、ゾンビインストゥルメントを通じてコードを実行できますRun > Run with Performance Tool > Zombies。これにより、特定のオブジェクトとその保持数をタイムラインで確認できます。


1
ゾンビのオプションが表示されますが、グレー表示されています。それがどのように有効になるか知っていますか?
Rahul Vyas、2011

@RahulVyas、私はこれまでに見たことがありませんが、ガベージコレクションをオンにしていますか?ゾンビがそのコンテキストで意味をなさないのを見ることができました
Dov

サポートされている[-fobjc-gc]と表示されている設定でガベージコレクションをオンにしましたが、そのオプションは無効になっています。Infact最後の5つのオプションのみが、instrumentsカテゴリーで有効になります。他のアイデアは?それとも私は何か間違ったことをしていますか?
Rahul Vyas、2011

@RahulVyas:申し訳ありませんが、明確にするために、ガベージコレクションでゾンビを作成することは不可能だと思っているので、ガベージコレクションをオフにするとゾンビが有効になる可能性があると考えました。それでも解決しない場合は、Instrumentsのドキュメントを読むことをお勧めします(各インストゥルメントについてよく書いてあります)。それでもまだわからない場合は、ここに質問を投稿して、注目を集めてください(最終的には回答です)。 。
Dov

4

Xcode 4.5.2では、[製品]-> [スキームの編集]->に移動し、[診断]タブで、目的Cとゾンビオブジェクトを有効にするの間にあるチェックボックスをオンにして、[OK]をクリックします。


3

ゾンビログを有効にするには、Xcodeプロジェクトの実行可能ファイルグループの実行可能ファイルをダブルクリックします。この時点で、[引数]タブをクリックし、Variables to be set in the environment:セクションで変数を呼び出してNSZombieEnabled、その値をに設定しますYES


3

XCode 4.0の場合:InstrumentsでNSZombieを検出するには、シミュレータをターゲットとして選択します(デバイスでNSZomboeを検出できません)。Instruments(CMD + I)を実行し、「ゾンビ」トレーステンプレートを選択します。楽しい。


2

実行可能ファイルの設定で環境変数NSZombieEnabledを追加し、値をに設定しますYES


2

ウルXCODE(4.3)の次の再生ボタン:)(実行)

選択:スキームの編集

スキーム管理ウィンドウが開きます

引数タブをクリックします

表示されるはずです:1-起動時に渡される引数2-環境変数

(2-環境変数)の場所内名前:NSZombieEnabled
値:YES

これで完了です...


1

NSZombieEnabledは、BAD_ACCESSのデバッグに使用されます。

XcodeのスキーマシートからNSZombiesEnabled環境変数を有効にします。

Click on Product⇒Edit Scheme to open the sheet and set the Enable Zombie Objects check box

このビデオは、私が何を言おうとしているのかを理解するのに役立ちます。


@kleopatraおかげで適切な設定で私の回答が更新されました
user2554822 '22
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.