从主机调试Parallels vm中的macOS应用程序

时间:2017-09-25 07:34:20

标签: swift xcode macos lldb parallels

我正在开发一个运行在10.11+上的macOS应用程序。我的开发机器运行10.12,很可能在今天晚些时候运行10.13。

要在10.11上测试应用程序,我将其复制到运行旧版macOS的Parallels虚拟机中。现在,如果我想在旧系统下实际调试应用程序,我将不得不做什么(这是否可能)?我的崩溃只发生在10.11之下,如果没有断点可用就很难调试。

出现以下问题:

我使用Xcode 9,它需要10.12 afaik,所以我不能只在VM中运行Xcode(除了我使用最新的10.12 SDK专门构建应用程序的事实,这在10.11不可用? )。

实际上是否可能

  • 通过从主机上的Xcode“运行”来启动虚拟机内的应用程序?
  • 在从Xcode外部手动运行应用程序后附加?
  • 不使用Xcode但至少从命令行调试?

这个问题通常如何解决?

1 个答案:

答案 0 :(得分:0)

要从主机运行lldb并将其连接到VM ​​guest虚拟机,这对我来说适用于Mac的Parallels 14 Pro,El-Capitan VM,Mojave Host

在VM上:

下载Xcode命令行工具并找到lldb-server,我的路径如下,启动服务器:

/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/Resources/lldb-server platform --listen "*:1234" --server

在VM上启动您的应用程序-我刚刚使用了共享文件夹

在主机上

$ lldb
lldb> platform select remote-macosx
lldb> platform connect connect://<Your VM - e.g. el-capitan>:1234   
lldb> file "<YourPath>/<YourApp>.app/Contents/MacOS/<AppName>"
lldb> platform process list
lldb> attach 750 # The PID from the list command
lldb> process continue
lldb> break set --filename <AnyFileInYourApp>.swift --line <nnn>
lldb> po <variable>
lldb> ... and so on

在文件命令中注意,其不是.app而是二进制文件

现在要找到支持此功能的IDE

Visual Studio代码似乎运行良好,这是我的launch.json条目

{
            "name": "Remote attach",
            "type": "lldb",
            "request": "attach",
            "program": "<YourPath>/<YourApp>.app/Contents/MacOS/<AppName>",
            "initCommands": [
                "platform select remote-macosx",
                "platform connect connect://<Your VM - e.g. el-capitan>:1234"
            ],
}