2009-06-19 3 views
5

Xcodeデバッガウィンドウでsome custom Objective-C objectsのデバッグを簡単にするために、related Apple documentationとXcodeの組み込み関数を使用して、ガイドとしてのデータフォーマッタで。カスタムObj-Cオブジェクト用のXcodeデータフォーマッタバンドルの作成

My custom summary strings Xcodeに同梱されているデータフォーマッタを使用して/Developer/Library/Xcode/CustomDataViews/に入れればうまくいきます。しかし、ユーザーがそのディレクトリに書き込み権限を持っていない可能性があり、カスタムフォーマッタと組み込みのフォーマッタを混在させると混乱する可能性があるので、私はむしろそれをやりたいと思います。同様に、〜/ Library/Application Support/Apple/Developer Tools/CustomDataViews/CustomDataViews.plistに自分自身のエントリを追加することもできますが、そのファイルはデフォルトを上書きするユーザー定義の値であり、そのエントリは変更によって保護されますXcodeデバッガのGUIに表示されます。私が本当に望むのは、自分のデータフォーマッタを使ってXcodeが認識できるようにファイルを置くことができるようにすることですが、ユーザーは必要に応じて別のファイルの設定を選択的に上書きすることができます。

問題は、私は(this Apple sample codeの例以下)バンドルを作成するときにということで、それをインストールします(どちらか/開発/ライブラリ/ Xcodeの/ CustomDataViews/または任意のライブラリ/ Application Support /アップル/開発ツールで/ CustomDataViews/パス)、Xcodeはカスタムフォーマッタを認識または使用しません。

機能は見出し機能の一つではない可能性があるため、データフォーマッタ束の仕様上のドキュメントは、(Xcode.app/Contents/PlugIns/GDBMIDebugging.xcpluginにほとんど単一のヘッダファイル)やや乏しいありますXcodeの;-)どんな助けでも大歓迎です。

答えて

4

私は最近これに戻ってきました。答えが見つかったと思います。

データフォーマッタバンドルには内部的に "Contents/Resources/*。plist"という名前のプロパティリストファイルが含まれている必要があることはすでに知っていました。ただし、バンドルが実際に動作するには、には、の実行可能ファイルが含まれていなければなりません。Contents/MacOS/ディレクトリにバンドルと同じ名前が付いている必要があります。私が知る限り、バイナリをコンパイルしてリンクしている限り、完全に空のfoo.cファイルで十分です。私はXcodeの在庫CFPlugin BundleプロジェクトのInfo.plistに触れる必要もなく、単にCustomDataViews.plistをターゲットリソースに含めていました。

私が扱っているオブジェクトや構造体を表示するためにC関数を定義する必要はないので、はるかに簡単な方法はplistファイルを置くことです(任意の名前は - CHDataStructures.plistです)。 2つのいずれかの場所:

  • ~/Library/Application Support/Developer/Shared/Xcode/CustomDataViews/
  • /Library/Application Support/Developer/Shared/Xcode/CustomDataViews/

シンプルなplistファイルを作成するのは簡単、小さく、および変更が容易です。また、バンドルを使用する場合とは異なり、plistを追加、削除、または変更したときにXcodeを再起動する必要はありませんでした。新しいデバッギングセッションを開始するだけで、新しいデータフォーマッタを更新することができました。私はサンプルコードが示したものだからバンドルを作成しているに過ぎないと思っていますが、シナリオの利点を判断することはできませんので、plistに固執しています。

+0

あなたが指摘したように、それが動作するためには*必須ではありませんが、空であってもシンボル '_pbxgdb_plugin_functions'で' _pbxgdb_plugin_function_list * 'タイプのポインタを宣言することがベストプラクティスです。 – ELLIOTTCABLE

2

Xcode 2.5および3.0以降、このような場所は、1つのシステム上に共存する複数のバージョンのXcodeをサポートするように変更されました。カスタムデータフォーマッタは、ローカル(/)またはユーザ(~)ドメインのディレクトリ "Library/Application Support/Developer/Shared/CustomDataViews"に配置する必要があります。次回Xcodeを起動したときにそれらを利用できるようにする必要があります。

上記のパスのSharedには、特定のXcodeバージョンに固有のものを作成する場合は、3.0または3.1などのバージョン番号を使用できます。

+0

変更の理由を知っておいてよかったですが、ローカルドメインとユーザードメインのどちらでも動作させることはできません。私はそれらが正しい場所だと確信していますが、バンドルは/ Developer/Library/Xcode/CustomDataViews /のどちらでも動作しません。これで、組み込みの場所でバンドルをデバッグすると、Xcodeで内部エラーが発生します。バンドル自体に問題があるようです。 –

+0

私は最終的にライブラリ/アプリケーションサポート/開発者/共有/ Xcode/CustomDataViews /(パスの "Xcode"に注意してください)で動作するバンドルと裸のplistsを得ました。たぶん単純なタイプミスでしょうが、あなたの助けなしに正しいパスを見つけられなかったでしょう。ありがとう! :-) –

関連する問題