1

xcode からアプリケーション (c++ コマンドライン) を起動しようとすると、同様のエラーが発生します (アプリケーションはターミナルから正常に動作します。

XCode: 「APP_X_Y」を起動できませんでした - 「A」パケットがエラーを返しました: -1

上記の質問で言及されているすべての解決策を試しましたが、どれも役に立ちませんでした。

私は最終的に問題がLLDBを使用して起動していることを発見したので、GDBは正常に動作します。しかし、LLDB を使用してプログラムをデバッグし、xcode のデフォルト設定で起動したいと考えています。

エラーは次の lldb 関数にあります。

Error
PlatformRemoteGDBServer::LaunchProcess (ProcessLaunchInfo &launch_info)
{
    Error error;
    lldb::pid_t pid = LLDB_INVALID_PROCESS_ID;

    m_gdb_client.SetSTDIN ("/dev/null");
    m_gdb_client.SetSTDOUT ("/dev/null");
    m_gdb_client.SetSTDERR ("/dev/null");
    m_gdb_client.SetDisableASLR (launch_info.GetFlags().Test (eLaunchFlagDisableASLR));

    const char *working_dir = launch_info.GetWorkingDirectory();
    if (working_dir && working_dir[0])
    {
        m_gdb_client.SetWorkingDir (working_dir);
    }

    // Send the environment and the program + arguments after we connect
    const char **argv = launch_info.GetArguments().GetConstArgumentVector();
    const char **envp = launch_info.GetEnvironmentEntries().GetConstArgumentVector();

    if (envp)
    {
        const char *env_entry;
        for (int i=0; (env_entry = envp[i]); ++i)
        {
            if (m_gdb_client.SendEnvironmentPacket(env_entry) != 0)
                break;
        }
    }
    const uint32_t old_packet_timeout = m_gdb_client.SetPacketTimeout (5);
    int arg_packet_err = m_gdb_client.SendArgumentsPacket (argv);
    m_gdb_client.SetPacketTimeout (old_packet_timeout);
    if (arg_packet_err == 0)
    {
        std::string error_str;
        if (m_gdb_client.GetLaunchSuccess (error_str))
        {
            pid = m_gdb_client.GetCurrentProcessID ();
            if (pid != LLDB_INVALID_PROCESS_ID)
                launch_info.SetProcessID (pid);
        }
        else
        {
            error.SetErrorString (error_str.c_str());
        }
    }
    else
    {
        **error.SetErrorStringWithFormat("**'A' packet returned an error: %i",** arg_packet_err);**
    }
    return error;
}

ご覧のとおり、「a」パケット エラーが lldb にあります。問題は、この問題をどのように修正できるかということです。xcodeでLLDBを再インストール/再構成する解決策はありますか? 誰でもlldb関数から問題がどこにあるかを見つけることができますか?

私は最新のMac OS + Xcode 4.6.3最新を使用しています

あなたのアイデアを共有してください。

4

2 に答える 2

2

このエラーはdebugserver、デバッグしようとしているアプリを起動できない場合に発生します。 debugserverプロセスを起動、接続、停止、検査、および制御します。これは、これらすべての責任を持つ小さなプログラムです。これは、「gdb リモート プロトコル」を介して (おそらく Xcode 内で) lldb と通信し、いくつかの小さな拡張機能があります。

独自の lldb を構築した場合、debugserver適切にコード署名されていないため、アプリを起動できない可能性があります。

ファイルを変更/etc/hostsした場合は、次のような行があることを確認してください127.0.0.1 localhost。何人かの人々が自分の行を変更し/etc/hosts(理由はわかりません)、この行を削除しました。これにより、lldb が debugserver と通信しようとして問題が発生しました。

それ以外の場合は、出力を調べて、Console.app有用なメッセージがログに記録されているかどうかを確認してください。

于 2013-06-22T06:40:39.857 に答える
1

私も同じ状況でした。私の場合、Xcode 5にアップデートした後に発生しました。結局のところ、それは今うまくいきます。

Jason Molendaからのコメントに従って、コマンドラインの実行に従いました。

「xcrun lldb ...」を実行すると、エラーが発生しました。

xcrun error failed to exec real xcrun. (no such file or directory)

グーグルの後、私はこれを理解しました:

xcode-select -print-path
/Developer

私のXcodeがそこになかったので、私はしました:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

理由はわかりませんが、私の場合はすぐには機能しませんでした。Xcode、ターミナルなどを終了した後、Xcode が実行され、デバッグが期待どおりに機能しました。

于 2013-09-25T01:22:24.153 に答える