Mac上Gdb安装和使用的过程

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 创建证书

  1. command+空格键,输入钥匙串访问。
  2. 菜单上点击钥匙串访问->证书助理->创见证书
  3. 填写如下信息
    • 名称:gdb_codesign
    • 身份类型:自签名根证书
    • 证书类型:代码签名
    • 勾选:让我覆盖这些默认设置
  4. 之后一直next,直到出现“指定证书位置”,选择系统,然后完成。
  5. 之后在左侧边栏上边选择“系统”,下边选择“我的证书”可以看到创建的证书,然后双击。展开“信任”这一项,选择“始终信任”。
  6. 关掉窗口,此时需要验证密码。

如果在最后一步选择了“系统”,但是完成后提示“未知错误=-2xxxxxxxx”,可以先以登录的方式创建证书。然后在登录栏中找到,拖到桌面上,然后再拖回系统栏中。其他操作相同。

2.2 对gdb签名

Terminal中执行下列命令

# 如果提示找不到gdb则指定gdb的全路径
codesign -s gdb_codesign gdb

2.3 重启

否则签名不会生效。

3 vscode中使用gdb

gdb很强大,但是与vscode良好的可视化界面配合会更好。

  1. 官网下载vscode:https://code.visualstudio.com/download
  2. 安装相关插件:C/C++ Clang,C++ Intellisense,C/C++
  3. 配置launch.json,当中配置成gdb即可。

Reference

1.解决GDB在Mac下不能调试的问题:https://segmentfault.com/a/1190000004136351

2.XGBoost解析系列-准备:https://blog.csdn.net/matrix_zzl/article/details/78571349

你可能感兴趣的:(linux,mac,c++)