我有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一起使用
答案 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。