web-dev-qa-db-ja.com

XcodeでNSZombieを有効にする方法

エラートレースなしでクラッシュするアプリがあります。私がデバッグしている場合、何が起こっているのかの一部を見ることができますが、どのオブジェクトが「ゾンビ化」しているのか理解できません。

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

293
jason

環境変数は現在「スキーム」の一部です。

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

  • "Product"メニューから "Edit Scheme"を選択してください。

  • 左側のパネルの「Run Foo.app」ステージ、および右側の「Arguments」タブに進みます。

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


Xcode 4.1以降では、「Run」ステージの「Diagnostics」タブに「Enable Zombie Objects」のチェックボックスがあります。


Xcode 6.4の場合:

Screenshot

433
一二三

私はトラブルシューティング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
141
Moshe Kravchik

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

また注意すべきもう1つのことは、楽器ライブラリには実際のゾンビ楽器がないということです。ゾンビトレーステンプレートは、実際には "Enable NSZombie detection"起動設定セットを持つAllocationsインストゥルメントで構成されています。

43

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

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

また、このプロセスは10.6のリリースとXcodeとInstrumentsの次のバージョンでずっと簡単になるでしょう。ただ言って'。 =)

25
Dave DeLong

製品>プロフィールがインストゥルメントをポップアップします。パネルからゾンビを選択して、ナッツを倒します。

22
garageàtrois

製品 - 方式 - 編集方式 - 引数 - 環境変数 set NSZombieEnabled = YESに進んでください。

enter image description here

enter image description here

16
PJR

Xcode 4.2では

ジャンプ - 製品 - >スキームの編集 - > Run yourappname.appをクリック - > Diagonostics - > Enable Zombie objectをクリックする。

12
Dax

これが、iOSでのメモリクラッシュを見つけて修正するためのInstrumentsとNSZombieの使い方のビデオと説明です。 http://www.markj.net/iphone-memory-debug-nszombie/

11
Mark Johnson

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

6
Dov

Xcode 4.5.2では、製品 - >スキームの編集 - >の順に選択し、DiagnosticsタブでObjective CとEnable Zombie Objectsの間にあるチェックボックスをオンにして、OKをクリックします。

4
Gani414

XCode 4.0の場合:InstrumentsでNSZombieを検出するには、ターゲットとしてシミュレータを選択します(デバイス上でNSZomboeを検出することはできません)。 Instruments(CMD + I)を起動して "Zombies"トレーステンプレートを選択してください。楽しい。

3
Ehud B

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

3
DreamOfMirrors

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

2
user142019

ur XCODE(4.3)では再生ボタンの隣:)(実行)

選択:スキームを編集

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

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

1 - 起動時に渡された引数 - 2 - 環境変数

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

そしてそれは…….

2
Rabih harb

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

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

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

これ ビデオ は私が言おうとしていることを見るのを助けるでしょう。

1
user2554822