为什么Xcode无法附加到某些程序?

The*_*ife 6 debugging macos xcode macos-monterey

我不得不重新安装我的 MacBook Pro。我已经安装了最新的 macOS 和 Xcode 版本,所以

macOS 蒙特利 12.0.1 (21A559) 和版本 13.1 (13A1030d)

我正在编写音频插件,因此为了测试我的插件,我通常运行 DAW(数字音频工作站),就我而言,我大部分时间都在使用 Ableton 或 Bitwig。

因此,如果我启动调试过程,则会收到以下错误:无法附加到 pid XXXXXX 附加失败(不允许附加到进程。当附加失败时,请查看调试服务器条目附近的控制台消息 (Console.app) .拒绝附加权限的子系统可能会记录一条有关其被拒绝原因的信息性消息。)

如果我关注 console.app 中的以下几行:

[LaunchAttach] (3277) 关于task_for_pid(2930)

错误:[LaunchAttach] MachTask::TaskPortForProcessID task_for_pid(2930) 失败:::task_for_pid ( target_tport = 0x0203, pid = 2930, &task ) => err = 0x00000005 ((os/kern) 失败)

macOSTaskPolicy:(com.apple.debugserver)可能无法获取(BitwigStudio)的任务控制端口(pid:2930):(BitwigStudio)已硬化,(BitwigStudio)没有get-task-allow,(com.apple. debugserver) 是声明的调试器(com.apple.debugserver) 不是声明的只读调试器

1 +0.000000 秒 [0ccd/0103]: 错误:::task_for_pid ( target_tport = 0x0203, pid = 2930, &task ) => err = 0x00000005 ((os/kern) 失败) err = ::task_for_pid ( target_tport = 0x0203, pid = 2930, &task ) => err = 0x00000005 ((os/kern) 失败) (0x00000005)

我做了一些研究,发现了这个: Stackoverflow 链接关于 What does get-task-allow do

get-task-allow 在登录到应用程序时允许其他进程(如调试器)附加到您的应用程序。分发配置文件要求关闭此值,而开发配置文件要求打开此值(否则 Xcode 将永远无法启动并附加到您的应用程序)。

所以我无法用该软件来调试我的程序。那是对的吗?:(

Ard*_*rda 6

当您无法访问原始源代码或不想重建它时,例如为另一个应用程序(在您的情况下为 DAW)开发插件时,您可以轻松更改应用程序的权限,如下所示启用调试:

\n
    \n
  1. 读取当前的权利如下(替换daw.app为实际应用名称):

    \n
    codesign --display --xml --entitlements daw.entitlements daw.app\n
    Run Code Online (Sandbox Code Playgroud)\n

    注意:在终端应用程序中运行此命令。它将daw.entitlements在当前文件夹中创建一个名为的文件。仅运行该命令一次或删除以前创建的任何命令daw.entitlements;否则该命令将继续附加到同一文件。

    \n
  2. \n
  3. 在任何文本编辑器中打开daw.entitlements并在前面插入以下文本</dict></plist>并在文件末尾之前

    \n

    <key>com.apple.security.get-task-allow</key><true/>

    \n

    注意:如果 \xe2\x80\x99 已有同名条目,请将其值从 更改falsetrue不是添加新值。

    \n
  4. \n
  5. 按如下方式应用新权利(替换daw.app为实际应用程序名称):

    \n
    codesign -s - --deep --force --options=runtime --entitlements daw.entitlements daw.app\n
    Run Code Online (Sandbox Code Playgroud)\n
  6. \n
\n

这应该可以做到。万一您已经有一个名为daw.entitlements在同一文件夹中拥有一个命名的文件,请在所有步骤中使用不同的文件名。

\n


spa*_*ygw 5

您可以进行调试,但必须将“代码签名注入基本权利”设置为“”才能进行调试

在此输入图像描述

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

  • 这是否可以处理第三方软件中的调试插件?在OP的问题中,他们正在尝试在BitwigStudio(第3方,硬化软件)中调试AU或VST插件(他们的软件)。 (2认同)