我正在尝试在多个物理设备上并行执行 iOS 应用程序。在过去(XCode 4.3 和 iOS 6),我通过使用 gdb 调试器(iOS 6.1.3 及更低版本)的fruitstrap 完成了这一任务。在 XCode 5 中,Apple 删除了 gdb debugger并将其替换为 lldb debugger .
我重构了我的 fruitstrap 脚本,它可以与 lldb 调试器一起使用。但是,无法并行执行多个 lldb 进程。我在 lldb 控制台中收到以下错误消息:
(lldb) run
error: a process is already being debugged
我可以在 [apple source code}( http://www.opensource.apple.com/source/lldb/lldb-76/source/API/SBTarget.cpp ) 中看到它们一次只允许一个进程:
if (sb_process.IsValid())
{
state = sb_process->GetState();
if (sb_process->IsAlive() && state != eStateConnected)
{
if (state == eStateAttaching)
error.SetErrorString ("process attach is in progress");
else
error.SetErrorString ("a process is already being debugged");
sb_process.Clear();
return sb_process;
}
}
问题
任何帮助或想法表示赞赏:-)
最佳答案
lldb 仅支持每个目标一个进程,但您可以同时拥有任意数量的目标(使用相同的可执行文件或不同的文件)。从命令行您可以使用“target create”创建新目标(“file”命令只是“target create”的别名),“target list”列出它们,“target select”选择您想要,然后所有的执行控制和检查命令都在当前选定的目标上工作。
对于 gdb,您必须每个进程运行一个 gdb,因为 gdb 一次不支持多个进程。您还可以运行多个 lldb,认为这不是必需的,并且目标将共享任何常见的调试信息,因此在一个 lldb session 中运行一堆目标/进程更有效。
请注意,如果您正在编写脚本,则使用 lldb Python API 可能会更容易。
关于ios - 并行运行多个 lldb 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19171914/