ios - 并行运行多个 lldb 进程

标签 ios xcode parallel-processing gdb lldb

我正在尝试在多个物理设备上并行执行 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 进程?
  • 是否有任何其他工具可以在多个物理设备上并行启动 iOS 应用程序,它兼容 iOS 6 和 iOS 7 并且可以通过命令行执行? (XCTest 仅适用于 iOS 7,Instruments 不接受多个并行进程,libimobiledevice 也用于过去的 gdb)?

  • 任何帮助或想法表示赞赏:-)

    最佳答案

    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/

    相关文章:

    linux - 如何使用一个或多个特定内核执行应用程序?

    ios - 需要 Storyboard元素处于正确的位置并且在不同的 iPhone 型号中具有正确的大小

    ios - 从 Parse 查询 GeoPoint 并将其作为 MKAnnotation 添加到 MapKit?

    ios - Xamarin WebView iOS检测滚动事件

    ios - UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName 不起作用

    ios - 将 deviceToken 从 AppDelegate 传递到 swift 中的另一个类时出错

    ios - 获取错误 [UIImage 范围] : unrecognized selector sent to instance

    ios - 如何在 RxSwift 中为去抖设置 RxTimeInterval?

    C#:在 ASP.NET 中向 Parallel.ForEach() 添加上下文

    c - MPI 仅从 SELECT 处理器收集