停止“开发人员工具访问需要控制另一个进程才能继续调试”警报
Posted
技术标签:
【中文标题】停止“开发人员工具访问需要控制另一个进程才能继续调试”警报【英文标题】:Stop "developer tools access needs to take control of another process for debugging to continue" alert 【发布时间】:2012-02-26 07:37:00 【问题描述】:我最近升级到 10.7.3,登录后第一次尝试在模拟器中调试我的 ios 项目时,系统提示我以下两个警报:
我的用户是管理员用户。我以前从未见过这些警报。如何让他们停下来?
编辑
我已使用id -a
验证我是_developer
组的成员。
【问题讨论】:
我相信您需要像这样将自己添加到_developer
组:***.com/questions/1837889/… 但如果您已经是_developer
组的一部分(就像我一样),那么我不是确定发生了什么变化。我知道 /etc/authorization
文件在 10.7.3 中已更改,并且一些测试表明我可以通过将其编辑为始终为 allow
调试来消除一些提示,但使用默认规则似乎使 _developer
组失败测试。 :( 我注意到我发现了什么,所以其他人可能会挖掘更多细节并更了解发生了什么。
很遗憾这已关闭。
不知道为什么这太本地化了;这是在此处找到的问题(带答案)的副本:***.com/a/11416025/2063546
这是第一个被问到的。另一个是副本。
【参考方案1】:
文件 /etc/authorization 上的某些内容已被修改,我有一个没有 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)
【讨论】:
【参考方案2】:升级到 10.7.3 后重新安装 Xcode 4.2.1 似乎已经为我解决了这个问题。
【讨论】:
Mac OS 10.8 或 iOS 5.1 启动时,我们将不得不再次这样做。话说他们正在使 Xcode 应用程序成为一个真正的 .app,以便通过 App Store 进行更新。 Xcode 4.3 已经以这种方式交付。自安装以来,我没有遇到过这个密码问题。【参考方案3】:根据 Zev Eisenberg 的回答,重新安装 Xcode 4.2.1 有效。但是,使用以下差异修补 /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>
【讨论】:
我做了和上面一样的事情。现在的问题是我无法上网。我不确定这是怎么发生的。 我已经尝试过 DevSecurityTools,将自己添加到 _developer 组并进行了这些修改。系统仍然提示我提供访问权限。到目前为止,我还没有找到任何可以删除提示的内容。 通过执行security authorizationdb write system.privilege.taskport allow
更改 system.privilege.taskport 使我的密码提示消失【参考方案4】:
对此有一个更简单的解决方案。尝试运行以下命令:
sudo /usr/sbin/DevToolsSecurity --enable
【讨论】:
谢谢!这很棒。DevToolsSecurity
的手册页准确地解释了发生了什么。
为我工作,但苹果为什么要添加这个障碍?您从 XCode 的工作版本升级,并立即发现自己不得不谷歌他们奇怪的错误消息,试图找出如何继续使用 XCode。糟糕的服务。
像魅力一样为我工作。非常感谢!
对我也不起作用:Developer mode is already enabled.
这适用于我在 iMac 上的 Xcode 8,在 Mac OS Sierra 上运行 TeamCity 代理。【参考方案5】:
我修改了system.privilege.taskport
的规则,但警报不再显示。
-
打开文件
/etc/authorization
。
找到规则system.privilege.taskport
。在<key>class</key>
行下,将<string>rule</string>
更改为<string>allow</string>
【讨论】:
发布差异比较好。 我已经尝试了所有其他建议,这是唯一有效的。谢谢。 这可能有效,但也可能会在您的沙箱中打开一个安全漏洞。我有点警惕。 谢谢!但是 /etc/authorization 在小牛队上已被弃用。你知道我现在应该用什么吗? 就像我上面评论的那样,它也可以通过在命令行中执行security authorizationdb write system.privilege.taskport allow
来工作。【参考方案6】:
不需要代码。无需重新安装 xcode。执行以下步骤:
1.关闭xcode。
2.打开钥匙串访问。
3.双击你的钥匙串(从keychain.p12创建的钥匙图标)
4.进入访问控制面板(名称可能不对)
5.enable all app access this.
6.保存。
7.运行您的 xcode 项目。
8.效果很好。
【讨论】:
【参考方案7】:启用开发者模式: 在终端运行这个: DevToolsSecurity -启用
【讨论】:
只要运行 'DevToolsSecurity' 命令默认启用它。不需要传递 -enable 参数 不适用于带有 GDB 调试器的 Eclipse CDT。Developer mode is already enabled.
【参考方案8】:
我的 mac 10.12.5 和 Xcode9 也有同样的问题 运行这个命令:
sudo security authorizationdb write system.privilege.taskport allow
然后输入您的密码..检查它是否仍然提示您。 祝你好运..
【讨论】:
这有助于 Eclipse CDT。谢谢。【参考方案9】:我刚刚在(编辑方案)中关闭了调试 -> 取消选中调试可执行文件。 但我也在另一个控制台上进行所有调试,所以如果你正在开发并需要调试器,那么它不会有帮助。我只在旧版本的 Xcode 8.2.1 上遇到这个问题,因为我使用 El Capitan 在旧 Mac 上运行代码。
较新的 mac 和 Xcode 版本 10 似乎没有这个问题。
【讨论】:
以上是关于停止“开发人员工具访问需要控制另一个进程才能继续调试”警报的主要内容,如果未能解决你的问题,请参考以下文章