欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mac上安装GDB调试工具,并且使用eclipse来进行调试的环境搭建

程序员文章站 2022-06-03 22:44:50
...

背景

GDB是一款代码调试工具。Mac下依旧支持,但是由于MacOS系统本身以及版本不协调等原因使用过程会遇到各种各样的问题。本文详细记录了从Gdb安装,钥匙串配置,与eclipse结合调试的过程。

版本

Mac版本:macOS High Sierra 10.13.6
GDB版本:8.0
(补充,关于最新版GDB8.2.1,我在安装完了之后,进行eclipse调试,eclipse无法查看变量的值等等,所以建议舍弃高版本,选择合适的低版本来安装)

GDB安装过程

安装前的准备工作

XCode的安装

直接通过Apple Store来进行安装即可,这样就有了C/C++的gcc和g++开发环境。

brew的安装
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

GDB安装

最快捷的方法是使用brew来安装,命令如下。

brew install gdb

但是这种方式默认安装的是最新版的GDB,版本号为8.2.1。在上面也提到过,最新版实际用起来有诸多问题,所以我们选择另外一种方式来安装。笔者建议安装8.0版本,经测试无使用问题。

点击这个链接下载8.0源码的安装包 http://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.gz 然后解压。进入解压后的目录,依次执行如下命令。

# 配置
./configure

# 编译
make -j4

# 安装
make install

# 查看gdb版本
gdb -v

此命令执行完后,一切顺利的话,看到的版本就应该是GDB8.0版本。

卸载该版本的GDB可以通过进入解压后的目录,执行如下命令来实现。

make uninstall

创建证书及签名

如果这时候直接调试程序会遇到如下错误。

(gdb) run
Starting program: /usr/local/hello
Unable to find Mach task port for process-id 528: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

这是因为Darwin 内核在你没有特殊权限的情况下,不允许调试其他进程。调试某个进程,意味着对这个进程有完全的控制权限。所以出于安全考虑默认是禁止的。所以允许gdb控制其它进程最好的方法就是用系统信任的证书对它进行签名。

创建证书

1、command+空格键,输入钥匙串访问。
2、菜单上点击钥匙串访问->证书助理->创建证书
3、填写如下信息
名称:gdb-cert
身份类型:自签名根证书
证书类型:代码签名
勾选:让我覆盖这些默认设置
然后一直点继续,直到出现直到出现“指定证书位置, 选择 登录/系统 ,选择 系统,之后继续,然后最后输入密码即可。

(补充,如果创建系统证书未成功,建议先创建登录证书,然后通过钥匙串访问的菜单栏—文件—导出项目,将证书导出到桌面,然后选择系统,将证书导入即可,期间涉及到输入密码问题,直接输入自己的密码即可。)

创建好证书之后,双击该证书,选择信任,然后选择始终信任,输入密码,然后退出钥匙串访问。

签名

Terminal中执行下列命令

#查看gdb的路径
which gdb

#进行签名
codesign -s gdb-cert 上一条命令的输出

#比如:我的就是这样 codesign -s gdb-cert /usr/local/bin/gdb
重启电脑

重启电脑使证书生效

eclipse中使用GDB

打开eclipse之后,选择Eclipse---->Preferences---->搜索栏输入gdb
在GDB debugger中填入 which gdb的输出
在GDB command file 中填入 ~/.gdbinit(该文件在安装8.0版本时候会自动创建)

至此,大功告成,你就可以开开心心的在Mac上使用eclipse进行C/C++代码的调试了。