首页 > 解决方案 > 在 macos Mojave 10.14 上使用 gdb 时出现代码签名错误

问题描述

我有 MacOS Mojave 10.14。
GNU gdb (GDB) 8.2.1

我阅读了很多关于此的帖子,但我想知道 2019 年是否有一些变化,因为大多数文章都是旧的。
来自: Eclipse GDB MacOSX Mavericks

我做了:

启动 Keychain Access 应用程序 (/Applications/Utilities/Keychain Access.app)
打开菜单 /Keychain Access/Certificate Assistant/Create a Certificate (TOP MENU BAR)

选择一个名称(示例中为 gdb-cert) 3.1 将“身份类型”设置为“自签名根” 3.2 将“证书类型”设置为“代码签名” 3.3 检查标志“让我覆盖默认值” 3.4 单击几次“继续”,直到进入“为证书屏幕指定位置”,然后将钥匙串设置为“系统” 3.6 确保“系统”中有“gdb-cert”(左上窗口)

在新制作的证书(gdb-cert)上按两次选择“获取信息”,

打开“信任”项,并设置“代码签名始终信任”关闭钥匙串访问应用程序

重新启动“taskgated”应用程序(kill -9),最后
codesign -s gdb-cert /usr/local/bin/gdb

但我仍然得到错误:

lee@l7:~/eclipse-workspace-cdt/my-proj/build$ ./my-proj
Hello world
(exe 工作正常)
lee@l7:~/eclipse-workspace-cdt/my-proj/build$ gdb my-proj
GNU gdb (GDB) 8.2.1 版权所有 (C) 2018 Free Software Foundation, Inc. 许可证 GPLv3+:GNU GPL 版本 3 或更高版本http://gnu.org/licenses/gpl.html 这是免费软件:您可以自由更改和重新分发它。在法律允许的范围内,不提供任何保证。键入“显示复制”和“显示保修”以了解详细信息。此 GDB 配置为“x86_64-apple-darwin18.2.0”。键入“显示配置”以获取配置详细信息。有关错误报告说明,请参阅: http ://www.gnu.org/software/gdb/bugs/. 在线查找 GDB 手册和其他文档资源: http ://www.gnu.org/software/gdb/documentation/ 。

如需帮助,请键入“帮助”。键入“apropos word”以搜索与“word”相关的命令...从 my-proj 读取符号...完成。

(gdb) 运行

启动程序:/Users/lefla/eclipse-workspace-cdt/my-proj/build/my-proj 找不到进程 ID 12808 的 Mach 任务端口:(os/kern)失败(0x5)。(请检查 gdb 是否经过代码签名 - 参见 taskgated(8))

(gdb) 运行

启动程序:/Users/lefla/eclipse-workspace-cdt/my-proj/build/my-proj 找不到进程 ID 12819 的 Mach 任务端口:(os/kern)失败(0x5)。(请检查 gdb 是否经过代码签名 - 参见 taskgated(8))

如果 gdb 已签名,它应该能够分叉其他进程。杀死“taskgated”是否足够(一些文章提到重新启动机器)?问题是什么 ?

______ https://sourceware.org/gdb/wiki/PermissionsDarwin
之后的EDIT 1 让我走得更远。然后我遇到了这个问题:gdb以信号终止?,未知信号 所以我创建了.gdbinit,现在我得到:



(gdb) 运行
启动程序:/Users/lefla/eclipse-workspace-cdt/my-proj/build/my-proj
[进程 14140 的
新线程 0x1a03] [进程 14140 的新线程 0x2603]
在启动期间程序以信号 SIGTRAP 终止, 跟踪/断点陷阱。

______ 编辑 2
使用 gdb 8.0.1 时,我得到:

my-proj”:不是可执行格式:文件格式无法识别

似乎与:
https://sourceware.org/bugzilla/show_bug.cgi?id=23746
但 gdb 8.3 刚刚发布,它最终与 gdb 8.3 一起使用

标签: macosdebugginggdbeclipse-cdtcode-signing

解决方案


gdb 代码设计在 10.14+ 中需要适当的权利: https ://sourceware.org/gdb/wiki/PermissionsDarwin

编辑:现在您可能正在复制此错误,这需要降级 gdb gdb-doesnt-work-on-macos-high-sierra-10-13-3 ... 答案有说明。

编辑 2:看起来升级到 gdb 8.3 现在应该适合您。


推荐阅读