4

これは、特にLionで実行されている新しいXcode4.1に関するものです。InstrumentsでNSZombieを有効にするにはどうすればよいですか?Xcode 4.0のように、Launch Configurationの下の(i)アイコンのAllocationsにはもうありません。ゾンビと呼ばれるライブラリエントリもありません。

もちろん、問題は、Lionでの実行を拒否するため、Xcode 4.0にフォールバックできないことです。そのため、私はピクルスになっています。私よりも経験豊富なLionを使用している他の最先端の開発者は、これを掘り下げるのを手伝うことができますか?ありがとう。-リック

4

3 に答える 3

7

私自身の質問に関して、Appleからこの非常に有用な回答を得ました。それは逐語的です-

ME:Xcode 4.1.1やInstrumentsを使用して、デバイスでテストし、これらのタフな割り当て解除されたオブジェクトを見つける方法に関する更新はありますか?

APPLE:まず、[Appleのフォーラムで]上に示したハックは、OSの内部変更によって廃止されました。つまり、ゾンビのセットアップはCFによって行われるようになりました。以下に示すコードを使用して、ゾンビを強制的に有効にすることができます。

extern void _CFEnableZombies(void);

int main(int argc、char ** argv){_CFEnableZombies();

... rest of your main ...

}

重要:_CFEnableZombies関数はプライベートであるため、このコードを本番アプリに配置することさえ考えていません。しかし、それは秘密ではありません。LionのDarwinオープンソースを見ると、どのように実装されているかがわかります。

http://www.opensource.apple.com/source/CF/CF-635/CFRuntime.c

これを行うと、ゾンビの実行方法に関係なく、ゾンビにメッセージを送信したときにアプリが停止します(ブレークポイント例外があります)。したがって、Allocationsインスツルメントを使用してInstrumentsで実行し、ゾンビ検出とアロケーション追跡の両方を取得できます。

ゾンビにメッセージが送信されると、システムは次のように出力することに注意してください。

***-[]:割り当て解除されたインスタンスに送信されたメッセージ "

これは、インストゥルメントコンソール領域には表示されません。表示するには、Xcode Organizer(またはiPCU)を使用する必要があります。

共有してお楽しみください

クイン「エスキモ!」Apple Developer Relations、Developer Technical Support、Core OS / Hardware

ME:この状況であなた方の何人かにとってそれが有用な情報であることを願っています。

于 2011-08-12T19:17:38.037 に答える
3

それは明確な楽器です:

別の楽器としてのゾンビ

于 2011-07-23T03:56:59.597 に答える
2

デバイスでNSZombieを使用して実行する別の方法がありますが、これは機器ではなくXCode4を介して実行されます。

デバイスでNSZombieを使用して実行するには、XCodeプロジェクトを開き、上部のメニュー項目[製品]をクリックし、Altキーを押しながら[実行]をクリックします。これにより、ウィンドウの下部に[環境変数]が表示される別のウィンドウが開きます。 。「+」を押して、名前に「NSZombieEnabled」を入力し、値に「YES」を入力します。

于 2011-08-01T17:49:10.337 に答える