4

STLコンテナなどをよりきれいに印刷できるように、カスタムデータフォーマッタバンドルを作成しようとしています.

できる限りオンラインの指示に従いましたが、バンドルコードを実行できないようです。データ フォーマッタが/Developer/Library/Xcode/CustomDataViews/にコピーされたときに、 Xcode に「Summary Unavailable」と表示させることしかできません。

Xcode「バンドル」テンプレートを使用してバンドルを作成し、これを C++ ファイルに入れました。

#include "/Developer/Library/Xcode/PrivatePlugIns/DebuggerFoundation.ideplugin/Contents/Headers/DataFormatterPlugin.h"
#include "Hi.h"

_pbxgdb_plugin_function_list *_pbxgdb_plugin_functions = NULL;

char * printHi( Hi * obj, int Id) {
    char * result = (char*)(_pbxgdb_plugin_functions->allocate(Id,100));
    sprintf( result, "%s", obj->string );
    return result;
}

Hi オブジェクトは自明です。

#include <stdio.h>
#include <string.h>

class Hi {
public:
    Hi( char * str ) {
        string = new char[strlen(str)+1];
        strcpy( string, str );
    }

    ~Hi() {
        delete( string );
    }

    void print( void ) {
        printf( "%s", string );
    }

    char * string;
};

問題が .plist ファイルにあるのではないことはわかっています。これは、StringSummary フィールドに次のコードを入力すると、文字列フィールドが出力されるためです。

%string%:s

ただし、これを入れると: (はい、これをHiオブジェクトではなく Hi * オブジェクトにリンクています。)

{(char *)printHi($VAR, $ID)}:s

私が得ることができるのはSummary Unavailableだけです。私は単純なプロジェクトでデバッグしています:

#include "hi.h"

void foo( Hi * obj ) {
    obj->print();
}

int main( void ) {
    Hi h( "test!" );
    foo( &h );
    return 1;
}

デバッガをデバッグするためのヒントはありますか? :P

4

1 に答える 1

1

Product > Debug > Shared Libraries があります。バンドルがロードされているかどうかを確認する必要があります。また、現在実行中のターゲットから任意の関数を使用できるようですが、_pbxgdb_plugin_function_list 変数はその時点で NULL のようです。

于 2012-08-31T18:26:01.503 に答える