在macOS Mojave 10.14上使用gdb时发生代码签名错误

时间:2019-05-04 19:12:13

标签: macos debugging gdb eclipse-cdt code-signing

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

我读了很多关于此的文章,但我想知道由于大多数文章都是旧的,2019年是否有所改变。
从: Eclipse GDB MacOSX Mavericks

我做到了:

  

启动钥匙串访问应用程序   (/ Applications / Utilities / Keychain Access.app)
  打开菜单/钥匙串   访问/证书助手/创建证书(顶部菜单栏)

     

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

     

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

     

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

     

重新启动“任务级”应用程序(杀死-9),最后
  codesign -s gdb-cert /usr/local/bin/gdb

但是我仍然收到错误:

  

lee @ l7:〜/ eclipse-workspace-cdt / my-proj / build $ ./my-proj
  世界你好
  (exe正常工作)
  lee @ l7:〜/ eclipse-workspace-cdt / my-proj / build $ gdb my-proj
  GNU GDB   (GDB)8.2.1版权所有(C)2018自由软件基金会,许可证   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”以搜索命令   与“单词”有关...从my-proj ...中读取符号。

     

(gdb)运行

     

启动程序:   / Users / lefla / eclipse-workspace-cdt / my-proj / build / my-proj无法   找到进程ID 12808的Mach任务端口:(os / kern)故障(0x5)。   (请检查gdb是否已进行代码签名-请参阅taskgated(8))

     

(gdb)运行

     

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

如果gdb已签名,则它应该能够派生其他进程。 杀死“ taskgated”是否足够(某些文章提到重新启动计算机)?有什么问题吗?

______编辑1
正在关注
https://sourceware.org/gdb/wiki/PermissionsDarwin
驱使我前进。然后我遇到了这个问题:
gdb terminated with signal ?, unknown signal
所以我创建了.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一起使用

1 个答案:

答案 0 :(得分:1)

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

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

编辑2:看来现在应该可以升级到gdb 8.3。