首页 文章

在lauch程序中Xcode lldb错误

提问于
浏览
1

当我尝试从xcode启动我的应用程序(c命令行)时,我得到了一个smilar错误,(应用程序在终端上工作正常 .

XCode: Could not launch "APP_X_Y" - 'A' packet returned an error: -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;
}

正如您在lldb中看到的'a'数据包错误现在问题是如何解决这个问题?是否有任何解决方案在xcode中重新安装/重新配置LLDB?任何人都可以从lldb函数中找到问题所在 .

我最近使用的是最新的Mac OS Xcode 4.6.3

请分享您的想法 .

2 回答

  • 1

    debugserver 无法启动您尝试调试的应用程序时,会发生此错误 . debugserver 启动,附加,停止,检查和控制流程 - 这是一个具有所有这些职责的小程序 . 它通过"gdb remote protocol"与lldb(可能在Xcode内部)进行通信,并带有一些小的扩展 .

    如果您已经构建了自己的lldb,则可能是 debugserver 没有正确签名代码,因此无法启动应用程序 .

    如果您更改了 /etc/hosts 文件,请检查您是否有像 127.0.0.1 localhost 这样的行 . 有些人修改了他们的 /etc/hosts (我不知道为什么)并删除了这一行,这导致lldb尝试与debugserver通信时出现问题 .

    否则,请检查 Console.app 中的输出以查看是否记录了任何有用的消息 .

  • 2

    我处于同样的境地 . 它发生在我的情况下更新到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运行并调试按预期工作 .

相关问题