2

情報>起動>待機を使用してXCode4.5を使用してプラグインをデバッグしています??? 起動とデバッグはうまく機能します。

ただし、停止ボタンを押すか、再生ボタンを押すたびに、プラグインをアタッチしたアプリケーションが強制終了されます(強制終了:9)。プロセスにアタッチする場合、再生ボタンまたは停止ボタンによってプロセスから切り離されるのは論理的ではありませんか?

lldbコンソールで毎回入力する代わりにXcodeでこの動作を変更する方法はありますか?>>プロセスデタッチを続行しますか?

メインアプリ(XCodeをアタッチするアプリ)にコードを追加して、デバッガーを切断するためのコードを追加することは可能ですか?

[ 編集 ]

デバッガーが接続されているかどうかを判別する次のコードが見つかりました。

bool debugger_attached( void )
{
    int mib[ 4 ];
    struct kinfo_proc info;
    size_t size;

    info.kp_proc.p_flag = 0;

    mib[0] = CTL_KERN;
    mib[1] = KERN_PROC;
    mib[2] = KERN_PROC_PID;
    mib[3] = getpid();

    size = sizeof( info );

    sysctl( mib, sizeof( mib ) / sizeof( *mib ), &info, &size, NULL, 0 );

    return ( ( info.kp_proc.p_flag & P_TRACED ) != 0 );
}

では、デバッガーを現在のプロセスから切り離す方法は?

4

1 に答える 1

1

フォローアップのコメントから、この動作(Xcodeにはプロセスから切り離すための単純なGUIジェスチャがない)が今日の動作方法であることがすでに明らかだと思います。これが正しい動作であるユースケースが少なくとも1つあります。MacでiOSシミュレータープロセスのデバッグを行う場合、シミュレーターアプリはXcode/lldbによって直接起動されません。既に起動されているプロセスにアタッチされます。その場合、Xcodeで[停止]ボタンを押すと、シミュレートされたアプリの実行が停止することが期待されます。これは、ユーザーが知らない/知る必要のない実装の詳細ですが、動作にはいくつかのロジックがあります。

それが価値があるもののために、あなたはあなたの~/.lldbinitファイルに次のようなエイリアスを作ることができます

command alias det process detach

detこれで、デバッガコンソールで、デタッチするためだけに入力できます。(または設定したいエイリアス)。GUIのボタンを押すほど簡単ではありませんが、よりも優れていprocess detachます。

于 2012-11-21T23:36:14.770 に答える