debugging 为什么Xcode无法连接到某些程序?

qaxu7uf2  于 2022-11-30  发布在  其他
关注(0)|答案(3)|浏览(142)

我不得不重新安装我的MacBook Pro。我已经安装了最新的MacOS & Xcode版本,所以
macOS蒙特里12.0.1(21 A559)和版本13.1(13 A1030 d)
我正在编程音频插件,所以为了测试我的插件,我通常运行一个DAW(数字音频工作站)在我的情况下,我的工作大部分时间与Ableton或Bitwig。
因此,如果我启动调试过程,我会得到以下错误:无法附加到pid XXXXXX附加失败(不允许附加到进程。当附加失败时,请查看debugserver条目附近的控制台消息(Console.app)。拒绝附加权限的子系统可能已记录了有关拒绝原因的信息性消息。)
如果我有眼光的话console.app下面这几行字:
[启动附加](3277)即将到pid的任务(2930)
错误:[启动附加]计算机任务::进程ID的任务端口pid(2930)失败:(操作系统/克恩)失败
macOST任务策略:(com.apple.debugserver)可能无法获取(BitwigStudio)的任务控制端口(pid:2930):(BitwigStudio)已强化,(BitwigStudio)没有get-task-allow,(com.apple.debugserver)是已声明的调试器(com.apple.debugserver)不是已声明的只读调试器
1 +0.000000秒[0 ccd/0103]:错误:错误= 0x 0000005((操作系统/内核)失败)错误=:错误= 0x 0000005((操作系统/克恩)失败)(0x 0000005)
我做了一些调查,发现:Stackoverflow link about What does get-task-allow do
登录到应用程序时,get-task-allow允许其他进程(如调试器)连接到您的应用程序。分发描述文件要求关闭此值,而开发描述文件要求打开此值(否则Xcode将永远无法启动并连接到您的应用程序)。
所以我不能用那个软件来调试我的程序,对吗

eqzww0vc

eqzww0vc1#

您可以进行两柴,但必须将[程式码签署插入基本受权]设定为[]才能进行两柴

然后您必须添加预置描述文件。转到developer.apple.com,然后选择“证书、ID和描述文件”,为您正在测试的捆绑包ID创建预置描述文件。

798qvoo8

798qvoo82#

这在终端上为我解决了它

sudo DevToolsSecurity -enable
vlju58qv

vlju58qv3#

当您无法访问原始源代码或不想重新构建源代码时,例如为另一个应用程序开发插件时(在您的情况下是DAW),您可以轻松地更改应用程序的授权,如下所示以启用调试:
1.读取当前授权,如下所示(将daw.app替换为实际的应用程序名称):

codesign --display --xml --entitlements daw.entitlements daw.app

注意:在“终端”应用中运行此命令。它将在当前文件夹中创建一个名为daw.entitlements的文件。请仅运行此命令一次,或者删除以前创建的任何daw.entitlements;否则该命令将继续追加到同一文件。
1.在任意文本编辑器中打开daw.entitlements,并在文件末尾的</dict></plist>之前插入以下文本:
<key>com.apple.security.get-task-allow</key><true/>
注意:如果已经有同名的项目,请将其值从false变更为true,而不要新增项目。
1.如下所示应用新授权(将daw.app替换为实际应用程序名称):

codesign -s - --deep --force --options=runtime --entitlements daw.entitlements daw.app

如果在同一个文件夹中已经有一个名为daw.entitlements的文件,请在所有步骤中使用不同的文件名。

相关问题