【问题标题】:Debug System Pref Pane w/10.11 and System Integrity Protection带 10.11 和系统完整性保护的调试系统首选项窗格
【发布时间】:2015-12-27 12:37:18
【问题描述】:

我的一个项目是系统偏好设置窗格。在 10.11 中,Xcode 的调试器无法调试它,因为我得到“由于系统完整性保护而无法附加到系统偏好设置”。

我如何在 10.11 下调试我的 prefpane,就像我在每个操作系统回到 10.3 时所做的那样?

【问题讨论】:

  • 没有真正提到这个问题——除了你不能附加到某些进程,但不能附加到系统偏好设置,就不可能调试首选窗格。
  • 您使用的是 Xcode 7,对吗? “OS X El Capitan 需要 Xcode 7,其中包括 Swift 2、对系统完整性保护 (SIP) 的本机支持、应用程序精简以及最新的 SDK”,此外,“如果您必须在 Xcode 6 上停留一会儿,您将需要继续使用 OS X Yosemite 作为您的开发操作系统。...另请注意,OS X El Capitan 和 Yosemite 都支持 Xcode 7。” ——来自this blog entry。如果这没有帮助,希望其他人遇到这个问题。
  • 是的,OS X 10.11 和 Xcode 7。
  • 是的 - 我已经在 Apple Mailing List 上问过了。似乎 Apple 有人在锁定系统中的所有门时忘记了这种情况。

标签: xcode macos debugging osx-elcapitan


【解决方案1】:

我最终制作了系统偏好设置的副本,将其命名为“系统偏好设置(已签名)”,然后使用我的 DeveloperID 对其进行了签名,该 ID 替换了旧的代码签名并允许其正常运行而不会受到 SIP 的阻碍。

【讨论】:

  • 那行得通。供将来参考:codesign -s "My Codesign" -f /Applications/System\ Preferences\ \(signed\).app/
  • 请注意,您甚至可能不需要代码签名身份。临时签名足以让我调试 Console.app。使用codesign -s - -f /path/to/Whatever.app 进行临时签名。
  • 这在 10.15 中不再有效。见:stackoverflow.com/questions/58704469/…
【解决方案2】:

创建 PreferencePane 项目后,编辑 build 方案,在左侧列表中选择 Run 方案,然后在 argument 选项卡上添加环境使用 + 按钮的变量(变量 OBJC_DISABLE_GC 和值 YES)。

然后选择左侧列表中的Pre-Actions并添加

cp -Rf ${CONFIGURATION_BUILD_DIR}/BuildOutputPrefPane.prefPane ~/Library/PreferencePanes

然后选择左侧列表中的Run,并从info中选择System Preference.app作为Executable标签。

构建您的解决方案,然后通过单击它并替换现有的来构建输出并安装您的首选项窗格。

如果您在应用程序中放置断点并使用已安装的首选项窗格,则现在使用正确的方案运行您的项目,它可以工作,也可以记录工作。

这也适用于 Swift。

使用 Xcode 7.1.1、EL Capitan 和 Swift 2 语言进行测试。 享受

【讨论】:

  • 不。这样做我仍然收到“来自调试器的消息:由于系统完整性保护而无法附加到进程”Apple 的 DTS 说唯一的解决方案是关闭 SIP。
  • 也许您在执行此操作之前已妥协或降低了 SIP?
  • 对我来说同样的问题(macOS 10.12.2,Swift 3),我绝对没有以任何方式修改过 SIP。
猜你喜欢
  • 2020-03-01
  • 2020-03-02
  • 2016-07-11
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多