停止“开发人员工具访问需要控制另一个进程才能继续进行调试”警告

我最近升级到了10.7.3,当我登录后第一次尝试在模拟器中调试我的 iOS 项目时,我收到了以下两个提示:

Developer Tools Access needs to take control of another process for debugging to continue. Type your password to allow this.

gdb-i386-apple-darwin needs to take control of another process for debugging to continue. Type your password to allow this.

我的用户是管理员用户。我以前从没见过这些警报。我怎么才能让他们停下来?

剪辑

我已经使用 id -a验证了我是 _developer组的成员。

90476 次浏览

有些东西已经被修改在文件/etc/authority 上,我有一个没有 v10.7.3的 Lion,它有以下代码

第5807-5814行

    <key>k-of-n</key>
<integer>1</integer>
<key>rule</key>
<array>
<string>is-admin</string>
<string>is-developer</string>
<string>authenticate-developer</string>
</array>

更新后,由于支持新语言,文件包含了许多修改,但与调试授权相对应的行不同于

第7675-7676行

    <key>group</key>
<string>_developer</string>

我不能将这些差异应用到我的10.7.3 Lion 安装上,因为它是一台生产机器,我不能冒险破坏它

我已经从命令 id -a得到了所有必要的许可

uid=501(dave) gid=20(staff) groups=20(staff),
401(com.apple.access_screensharing),
402(com.apple.sharepoint.group.1),
12(everyone),
33(_appstore),
61(localaccounts),
79(_appserverusr),
80(admin),
81(_appserveradm),
98(_lpadmin),
100(_lpoperator),
204(_developer)

在升级到10.7.3之后重新安装 Xcode 4.2.1似乎对我来说已经修复了它。

根据 Zev Eisenberg 的回答,重新安装 Xcode 4.2.1起作用了。但是,使用以下 diff 对 /etc/authorization文件进行修补可能更容易。

        <key>system.privilege.taskport.debug</key>
<dict>
<key>allow-root</key>
<false/>
<key>class</key>
-           <string>user</string>
+           <string>rule</string>
<key>comment</key>
<string>For use by Apple.  WARNING: administrators are advised
not to modify this right.</string>
<key>default-button</key>
<dict>
...
</dict>
<key>default-prompt</key>
<dict>
...
</dict>
-           <key>group</key>
-           <string>_developer</string>
<key>shared</key>
<true/>
-           <key>timeout</key>
-           <integer>36000</integer>
+           <key>k-of-n</key>
+           <integer>1</integer>
+           <key>rule</key>
+           <array>
+               <string>is-admin</string>
+               <string>is-developer</string>
+               <string>authenticate-developer</string>
+           </array>
</dict>

有一个更简单的解决方案:

sudo /usr/sbin/DevToolsSecurity --enable

编辑

如果你在文图拉,请看 马克的回答

我修改了 system.privilege.taskport的规则,警报不再显示了。

  1. 打开文件 /etc/authorization
  2. 找到规则 system.privilege.taskport。在行 <key>class</key>下,将 <string>rule</string>改为 <string>allow</string>

不需要代码。不需要重新安装 xcode。执行以下步骤:

1. 关闭 xcode。

2. 开放钥匙链访问。

双击您的 Keychain (从 Keychain.p12创建的键图标)

进入访问控制面板(名称可能不正确)

5. 启用所有应用程序访问这个。

6. 保存。

7. 运行 xcode 项目。

效果不错。

启用开发模式: 在终端运行这个: 启用 DevToolsSecurity

我的 mac 10.12.5和 Xcode9也有同样的问题 运行以下命令:

sudo security authorizationdb write system.privilege.taskport allow

然后输入您的密码. . 检查它是否仍然提示您。 祝你好运。

我刚刚在(编辑方案)-> 取消选中调试可执行文件。 但是我也在另一个控制台上进行所有的调试,所以如果您正在开发并且需要调试器,那么它将无济于事。我只对旧版本的 Xcode 8.2.1有这个问题,因为我使用 El Capitan 在旧 Mac 上运行代码。

较新的 Mac 和 Xcode 版本10似乎没有这个问题。

我在 MacOS Ventura 上接收

enter image description here

DR

sudo dscl . append /Groups/_developer GroupMembership <username>

根据 https://stackoverflow.com/a/1837935/5506988

尝试过什么

sudo /usr/sbin/DevToolsSecurity --enable说已经启用了。

在输入我的用户名和密码之后,它就可以工作了,但是每次启动调试器时我都必须这样做。

如果我运行 sudo security authorizationdb write system.privilege.taskport allow,它会阻止提示 但只能等到下一次重启。

我尝试跟随现有的答案,要求你更新 /etc/authorization-这已经被弃用,因为 MacOS 的标新立异,现在是 /System/Library/Security/authorization.plist,但我不能编辑这个文件(我甚至尝试 这个) ,但因为我的 $USER不是一个文件的所有者,所以我不能强制覆盖它,即使用 sudo。

我尽力了

sudo /usr/libexec/PlistBuddy -c "Set :rights:system.privilege.taskport:class allow" authorization.plist

当然,同样的道理也适用,但这种做法无声无息地失败了。

如果我运行 id -a,它会返回 204(_developer),所以在运行 dcsl命令之前,我就已经是开发人员组的一员了

是什么让我改变了这一切

sudo dscl . append /Groups/_developer GroupMembership <username>