调试Mac应用程序时“来自调试器的消息:由于代码签名错误而终止”?

Posted

技术标签:

【中文标题】调试Mac应用程序时“来自调试器的消息:由于代码签名错误而终止”?【英文标题】:"Message from debugger: Terminated due to code signing error" when debugging a Mac app? 【发布时间】:2015-03-02 05:57:29 【问题描述】:

我正在沙盒中编写一个 Mac 应用程序,但似乎无法让代码签名工作。我已经从我的目标的信息选项卡中选择了“开发人员 ID”,并且我尝试让 Xcode 自动设置我的配置文件以及自己创建配置文件。该应用程序构建时没有任何错误或警告,但是当我尝试“构建并运行”时,它给了我以下错误:

【问题讨论】:

【参考方案1】:

console.app 中,我注意到我收到了以下消息:

3/5/15 4:46:37.151 PM taskgated[73]: killed com.nateparrott.Boxcar[pid 27408] because its use of the com.apple.developer.ubiquity-container-identifiers entitlement is not allowed (error code -67050)

事实证明,我的项目中的默认权利文件包含一个空的 iCloud 容器列表,这导致沙箱认为应用程序需要 iCloud 权限(默认配置中不包含这些权限)轮廓)。从权利文件中删除 iCloud 条目解决了这个问题。

【讨论】:

我在使用另一个权限时遇到了同样的问题。 这些是我解决此问题的步骤:1)我删除了所有与 CloudKit 相关的权利以使应用程序运行 2)重置证书 3)重新添加权利 我专门提出了单元测试,在这种情况下,解决方法是将测试目标上的签名证书从默认值(“签名以在本地运行”)更改为“开发”。 【参考方案2】:

尝试从开发中心重新生成您的证书。大多数情况下,当您切换到新的 Mac 或升级到更新的 OS X 版本后,都会发生这种情况。

【讨论】:

我今天刚刚创建了我的证书! (在同一台计算机上)【参考方案3】: 您已从门户下载并安装了您的证书(在 Keychain Access 中)。如果您今天在尝试运行它的同一台 Mac 上创建了证书,这将不是您的问题。 您的上述证书位于您导入 XCode 的配置文件中。 您实际上已将配置文件导入 XCode。它应该可以从您的构建设置下拉菜单中选择。 您在门户中创建的包标识符与您在项目中在 Target Info 下指定的标识符相匹配。

【讨论】:

很确定我已经涵盖了所有这些基础。我使用带有通配符 App ID 的配置文件这一事实可能是问题所在吗? 只要您的应用程序包标识符在通配符设置范围内,您应该没问题。 IE:“com.mycompany.*”将与“com.mycompany.foo”一起使用。同样,“com.mycompany.myapp.*”将与“com.mycompany.myapp.foo”一起使用。【参考方案4】:

我尝试将构建设置->代码签名身份设置为“Mac Developer”并将配置文件设置为“自动”。之后调试器运行良好。

【讨论】:

【参考方案5】:

ios 模拟器上调试、为 Mac Catalyst 开发时、ENABLE_HARDENED_RUNTIME 设置为 YES 时,也会发生这种情况。

以下 Xcode 配置有助于避免此错误:

ENABLE_HARDENED_RUNTIME[sdk=macosx*] = YES
ENABLE_HARDENED_RUNTIME[sdk=iphonesimulator*] = NO
ENABLE_HARDENED_RUNTIME[sdk=iphoneos*] = NO

【讨论】:

【参考方案6】:

修改目标>构建设置>代码签名身份到您的签名开发。

【讨论】:

请使用*括号将路径字体改为斜体。

以上是关于调试Mac应用程序时“来自调试器的消息:由于代码签名错误而终止”?的主要内容,如果未能解决你的问题,请参考以下文章

如何调试旧版Mac OS X的应用程序?

Rider EAP 和 Visual Studio For Mac 调试

C++在调试代码时为啥出现 检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式

在 Mac OS 下使用 Qt-creator 调试时如何进入 Qt 的源代码

适用于Mac系统的API接口调试应用

请问一下mac sublime编辑好的HTML文件 不能打开浏览器,用了网上的代码调试没用希望远程