macos - 在 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 一起使用
解决方案
gdb 代码设计在 10.14+ 中需要适当的权利: https ://sourceware.org/gdb/wiki/PermissionsDarwin
编辑:现在您可能正在复制此错误,这需要降级 gdb gdb-doesnt-work-on-macos-high-sierra-10-13-3 ... 答案有说明。
编辑 2:看起来升级到 gdb 8.3 现在应该适合您。
推荐阅读
- excel - 如何使用VBA在Excel中的范围末尾插入行
- python - 使用 python 脚本更新 Flask 网页
- odata - 如何显示扩展元素的错误消息?
- python - 两列之间的日期时间差,不计算完整的 24 小时
- azure-devops - 作为 Azure DevOps 中的组织所有者的用户在 Azure AD 中所需的最低权限是什么?
- node.js - 如何使用 node express API 在 Angular 应用程序中显示由 solr 索引的 PDF 文件
- html - CSS flex space-between问题
- asp.net - 两个不同 Web 应用程序上的 ASP.Net Identity PasswordHash 问题
- scala - 如何在流式查询中执行动态 SQL?
- php - 如何从现在开始在 PHP 中获得时差估计。类似于 moment.js fromNow() 函数