【转】Mac上Gdb安装和使用的过程

孤街浪徒 提交于 2020-02-08 09:52:35

转载声明

本文仅作笔记供参考, 原文链接: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安装

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

brew install gdb

  1. 目前(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的全路径(应该是/usr/local/bin/gdb吧

2.3 重启

否则签名不会生效。

Reference

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

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!