转载声明
本文仅作笔记供参考, 原文链接:https://blog.csdn.net/wj1066/article/details/83653153
0.1 背景
Gdb是一款代码调试工具。Mac下依旧支持,但是由于MacOS系统本身以及版本不协调等原因使用过程会遇到各种各样的问题。本文详细记录了从Gdb安装,钥匙串配置,与VScode结合调试的过程。
0.2 版本
Mac版本:macOS High Sierra 10.13.6
Gdb版本:8.0
1 Gdb安装
- 最快捷的方法是使用brew来安装,命令如下。
brew install gdb
- 目前(2018.11.2)brew install 默认会安装8.2版本,但是在后续使用的过程遇到了一些问题(Mac high Sierra和gdb8.0以上的版本有很多地方不兼容,强烈不建议使用),所以不建议使用这个版本。笔者建议使用8.0的版本,8.0安装如下方式。
点击这个链接下载8.0源码的安装包 http://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.gz 然后解压。进入解压后的目录,依次执行如下命令。
配置
./configure
编译
make -j4
安装
make install
查看gdb版本
gdb -v
一切顺利的话可以看到gdb的版本为8.0。
2 配置调试权限
如果这时候直接调试程序会遇到如下错误。
(gdb) run
Starting program: /usr/local/bin/fabnacci
Unable to find Mach task port for process-id 23330: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
这是因为Darwin内核在你没有特殊权限的情况下,不允许调试其他进程。调试某个进程,意味着对这个进程有完全的控制权限。所以出于安全考虑默认是禁止的。所以允许gdb控制其它进程最好的方法就是用系统信任的证书对它进行签名。
2.1 创建证书
command+空格键,输入钥匙串访问。
菜单上点击钥匙串访问->证书助理->创见证书
填写如下信息
名称:gdb_codesign
身份类型:自签名根证书
证书类型:代码签名
勾选:让我覆盖这些默认设置
之后一直next,直到出现“指定证书位置”,选择系统,然后完成。
之后在左侧边栏上边选择“系统”,下边选择“我的证书”可以看到创建的证书,然后双击。展开“信任”这一项,选择“始终信任”。
关掉窗口,此时需要验证密码。
如果在最后一步选择了“系统”,但是完成后提示“未知错误=-2xxxxxxxx”,可以先以登录的方式创建证书。然后在登录栏中找到,拖到桌面上,然后再拖回系统栏中。其他操作相同。
2.2 对gdb签名
Terminal中执行下列命令
codesign -s gdb_codesign gdb
如果提示找不到gdb则指定gdb的全路径(如果用brew下载的话, 可以输入brew info gdb, 找到那个,然后按住command,继续
2.3 重启
否则签名不会生效。
Reference
1.解决GDB在Mac下不能调试的问题:https://segmentfault.com/a/1190000004136351
2.XGBoost解析系列-准备:https://blog.csdn.net/matrix_zzl/article/details/78571349