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

版权声明:本文为博主原创文章,未经博主允许不得转载。如有问题,欢迎指正。非常感谢。 https://blog.csdn.net/u014788838/article/details/85992492

背景

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

创建证书及签名

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

扫描二维码关注公众号,回复: 4814830 查看本文章
(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++代码的调试了。

猜你喜欢

转载自blog.csdn.net/u014788838/article/details/85992492