“请检查 gdb 是否经过代码签名 - 请参阅 taskgated(8)” - 如何安装带有签名的自制代码的 gdb?

新手上路,请多包涵

我在 osx 10.8.4 下并且已经安装了带有自制软件的 gdb 7.5.1(动机是获得一个具有新功能的新 gdb,例如 –with-python 等……)

长话短说,当我在 c++ Eclipse 项目中运行调试时,我得到:

 Error in final launch sequence
Failed to execute MI command:
-exec-run
Error message from debugger back end:
Unable to find Mach task port for process-id 46234: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))
Unable to find Mach task port for process-id 46234: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

我遵循了各种关于代码签名的建议

所以我做了:

  1. 设置证书
  2. 签署 gdb -> codesign -s gdb-cert /usr/local/bin/gdb

当我在 Eclipse 中重新运行调试时,我得到与上面相同的错误“(请检查 gdb 是代码签名的 - 请参阅 taskgated(8))”。

如果我将 gdb 设置回较旧的 gdb(在 Eclipse 的 gdb 首选项中)/usr/libexec/gdb/gdb-i386-apple-darwin,调试将按预期运行。

有任何解决方案/提示吗?

谢谢

佩尔

原文由 pellekrogholt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 478
1 个回答

这就是在 Big Sur 上对我有用的方法: https ://dev.to/jasonelwood/setup-gdb-on-macos-in-2020-489k。其他指南中缺少的关键步骤是用于协同设计的 –entitlements gdb-entitlement.xml 选项:

我在这里复制文件 gdb-entitlement.xml 以供参考,以防链接站点消失: codesign –entitlements gdb-entitlement.xml -fs

其中 <gdb-cert> 是证书的名称,是 gdb 可执行文件的路径

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>com.apple.security.cs.allow-jit</key><true/><key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/><key>com.apple.security.cs.allow-dyld-environment-variables</key><true/><key>com.apple.security.cs.disable-library-validation</key><true/><key>com.apple.security.cs.disable-executable-page-protection</key><true/><key>com.apple.security.cs.debugger</key><true/><key>com.apple.security.get-task-allow</key><true/></dict></plist>

原文由 andrea m. 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题