我在使用带有 XCode 5.0 的 Eclipse C/C++ 项目进行应用程序调试时遇到了可怕的问题,我终于做到了。我终于能够成功调试我的应用程序,这就是我决定制作这个小教程的原因,希望能为其他人节省时间。
当尝试在 Mavericks OS 上的 Eclipse 上调试和使用 C/C++ 编写的应用程序时,会出现“错误 gdb -- 版本”。
这是因为 Eclipse 无法在新的 Mac OSX 上找到 GDB 调试,因为 Apple 不再支持 GDB 来代替 LLDB。要检查这是否是您的情况,只需尝试从终端运行,gdb
它将显示为找不到文件。
问题是还没有为 Eclipse 配置 LLDB(或相反)。那么如何让您的 Eclipse 再次像之前的 10.8 操作系统一样调试应用程序呢?
首先获取并编译 GDB。您有两种可能的选择:
- Macports(不幸的是,Mavericks 版本卡在了 Building getext 库中)
- 家酿
我的建议是从 Homebrew 获得它。在他们的网站上查看下载链接并使用
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/hebrew/go)"
让它安装。成功安装 GDB 后,您需要签署证书以使 Eclipse 能够使用 GDB,否则会显示错误:
找不到进程 ID 28885 的 Mach 任务端口:(os/kern) 失败 (0x5)。(请检查 gdb 是否经过代码签名 - 参见 taskgated(8))
这意味着 Eclipse 现在可以找到 GDB,但由于 Apple 证书问题而无法运行它。
要签署 GDB 应用程序并使 Eclipse 能够运行它,请遵循此处的指南:
https://sourceware.org/gdb/wiki/BuildingOnDarwin
可以概括为:
- 启动钥匙串访问应用程序(/Applications/Utilities/Keychain Access.app)
打开菜单/钥匙串访问/证书助手/创建证书(顶部菜单栏)
选择一个名称(示例中为 gdb-cert) 3.1 将“身份类型”设置为“自签名根” 3.2 将“证书类型”设置为“代码签名” 3.3 检查标志“让我覆盖默认值” 3.4 单击几次“继续”,直到您到达“为证书屏幕指定位置”,然后将钥匙串设置为“系统” 3.5 如果您无法将证书存储在“系统”钥匙串中,请在“登录”钥匙串中创建它,然后导出它。然后,您可以将其导入“系统”钥匙串。3.6 确保“系统”中有“gdb-cert”(左上窗口)
在新制作的证书(gdb-cert)上按两次选择“获取信息”,
- 打开“Trust”项,将“代码签名设置为始终信任”
- 关闭钥匙串访问应用程序
- 从活动监视器重新启动“任务门控”应用程序
现在您需要从终端签署证书
$ codesign -s gdb-cert ../path of GDB
例子:
$ codesign -s gdb-cert /usr/local/bin/gdb
现在一切就绪......准备好在 MacOSX Mavericks 上的 Eclipse 上调试 C/C++ 应用程序
确保您已正确设置再次仔细检查 Eclipse Menu Run->Debug Configuration->Debugger 行: GDB Debugger -> /usr/local/bin/gdb (或您的本地路径,使用 "$ which gdb 检查它" 获取正确的路径) GDB 命令文件-> .gdbinit
Apple 让 GDB 安装在 Mavericks 上,但他们喜欢人们在做一个简单的 Hallo World 程序之前把头按在墙上。没有意见。
玩得开心,我希望能节省您的时间!