当我尝试从 xcode 启动我的应用程序(c++ 命令行)时,我收到了 smilar 错误,(应用程序从终端正常工作。
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;
}
如您所见,lldb 中存在“a”数据包错误,现在问题是如何解决此问题?有什么解决方案可以在 xcode 中重新安装/重新配置 LLDB?任何人都可以从 lldb 函数中找到问题所在。
我正在使用最新的 Mac OS + Xcode 4.6.3
请分享你的想法。