【问题标题】:Can't Debug System Pref Pane under 10.15无法在 10.15 下调试系统首选项窗格
【发布时间】:2020-03-02 01:58:40
【问题描述】:

在 Xcode 11.1 中,我禁用了 SIP 并将系统偏好设置为调试可执行文件。当我运行我的构建时,系统偏好设置会加载,但是当我打开我的 prefPane 时,不会遇到断点。

这在 10.11 到 10.14 中运行良好。

启用 SIP 后,我按预期收到“无法附加到系统偏好设置”错误。但我不知道为什么断点永远不会像早期的 macOS 版本那样被命中。

我有一个 prefPane 使用的后台进程,我可以很好地调试它,但是在系统偏好设置中运行 prefPane 时尝试调试它不再起作用。

有人解决了吗?

这可能是因为 prefPane 实际上是在由 System Preferences 子启动的“legacyLoader”中运行的吗?

【问题讨论】:

    标签: xcode macos debugging macos-catalina


    【解决方案1】:

    我需要将“legacyLoader”指定为可执行文件,而不是自动启动它,而是等待它启动。

    我仍然不知道如何在不禁用 SIP 的情况下执行此操作,因为无法告诉系统偏好设置打开 legacyLoader 的备用(自签名)副本而不是默认系统副本。

    【讨论】:

    • 我将 Xcode 设置为调试 legacyLoader,并且它设法附加(SIP 已禁用),但断点不起作用...任何想法?
    • 设置 Xcode(v11,macOS 10.15)以查找 legacyLoader 对我有用,但您不能让它自动启动。您必须告诉 Xcode 您将手动启动 legacyLoader,这将在您的 prefPane 加载时发生。自从我写了这篇文章后,我决定将我们的产品从系统偏好设置中移到一个独立的应用程序中。我从未禁用过 SIP。
    • 是的,我现在开始工作了。断点不起作用的原因是二进制文件被意外剥离。您真的不需要禁用 SIP?
    • csrutil enable --without debug 放宽 SIP 刚好足以解除 task_for_pid 限制。
    猜你喜欢
    • 2020-03-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多