【问题标题】:Debug macOS app inside Parallels vm from host从主机调试 Parallels vm 中的 macOS 应用程序
【发布时间】:2018-03-06 02:30:59
【问题描述】:

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

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

出现以下问题:

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

那么有没有可能

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

这个问题通常是如何解决的?

【问题讨论】:

  • 在这种情况下,我会忽略 Xcode 并在 10.11 VM 中从命令行运行 lldb 调试器。这样您就可以从调试器启动应用程序,或者只是在运行时附加到它。
  • 嗯,但是我在虚拟机内部的 lldb 中有可用的源代码吗?抱歉,这是一个愚蠢的问题,但我从未在命令行上使用过 lldb。我的意思是我该如何单步执行我的源代码呢?
  • 如果是调试版本,那么可以。您还可以为发布版本生成dysm file。将它复制到你正在调试的机器上,在一个 Finder 可以索引它的位置,它应该会自动被拾取。
  • 嗯,当我在 vm 中安装 lldb 时,我只得到 Swift 3。我想我需要安装最新的 Swift 4 工具链。现在试试 ;)
  • 好的,所以我可以使用旧的 lldb 并运行目标,但我还不能使用文件名和行号设置断点,因为找不到这些位置。我想我需要先学习一些 lldb 的东西 :(

标签: swift xcode macos lldb parallels


【解决方案1】:

要从主机运行 lldb 并附加到 VM 来宾,这对我来说适用于 Parallels 14 Pro for Mac、El-Capitan VM、Mojave 主机

在虚拟机上:

下载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 Code 似乎运行良好,这是我的 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"
            ],
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    相关资源
    最近更新 更多