Mac上安装gdb

本文介绍如何在MacOS上安装GDB调试工具,并详细解释了如何通过生成证书和签名来解决因MacOS安全机制导致的调试问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 安装gdb

GDB作为一个强大的c/c++调试工具,一直是程序猿们的良好伴侣,但转到Mac os才发现竟然没有默认安装,所幸还有强大的homebrew工具:

brew install homebrew/dupes/gdb

然后就是漫长的等待+编译安装时间了,安装完成后敲击gdb能打印出版本信息,说明已经正确安装了:

Screen Shot 2014-11-24 at 01.04.15

如果现在就使用gdb进行程序调试的话会发现,根本行不通:

Screen Shot 2014-11-24 at 01.08.24

 

2. 生成证书

这是由于Mac os的安全机制阻止了我们的gdb对要调试的程序进行完全控制,对此我们要对gdb赋予合适的权限,首先我们要在keychain access里面添加相应的keychain (钥匙串):

create-cert-menu1

然后在下面的输入框中输入证书的名字及类型等:

create-cert-1

指定有效期:

create-cert-2

一路"continue",知道出现为我们的证书选择位置(Specify a Location for the Certificate)的时候注意:这里选"system"(如果这里无法选择system,选login也是可以的,只不过再生成相应证书后需要手动导出证书,然后再手工把gdb-cert导入到System中去):

create-cert-3

好了,“create”之后我们的证书就生成成功啦d

create-cert-4

接下来,我们选择"always trust"我们刚生成的证书,这样就不用每次在运行gdb的时候手工输入管理员密码了:

cert-get-info cert-always-trust

 3. 对gdb进行证书签名

完成上述步骤以后就可以退出keychain access了,但仅仅这样还是不够的,要对gdb进行签名,我们还需要杀死一个特殊的进程:

Screen Shot 2014-11-24 at 01.33.49

 

打开activity monitor, 在cpu一栏的搜索框中输入‘taskgated’,然后双击进程所在行,点选‘quit’,这是你会发现taskgated进程消失了(好无辜的一个进程:( )。现在就可以对gdb进行签名了:

codesign -s gdb-cert /usr/local/bin/gdb

其中‘/usr/local/bin/gdb’是gdb在我的电脑中所在的位置(其实它是'/usr/local/Cellar/gdb/7.8.1/bin/gdb'的一个软链接),此命令正常执行无任何输出。

注:如果某天想要取消对gdb的证书签名,可以使用‘codesign --remove-signature /usr/local/bin/gdb’来完成,前提是你的gdb-cert签名还在哦。

好了现在可以使用gdb进行调试了么,且慢!

把taskgated进程再杀死一次先(是的,顽强的taskgated在后台刚刚重新启动又要被我们给杀死了:( )

至此,才算是功德圆满,赶紧用gdb试着运行下我们的程序吧:

Screen Shot 2014-11-24 at 01.43.55

### 如何在3588设备上安装 GDB 调试工具 要在3588设备或平台上成功安装并配置 GDB 调试工具,可以按照以下方法操作: #### 1. 安装依赖项 首先,在目标平台(如3588设备)上确保已安装必要的构建工具和库文件。可以通过包管理器完成此过程。如果使用的是基于 Debian 的 Linux 发行版,则可运行如下命令来安装所需的开发工具链: ```bash sudo apt-get update && sudo apt-get install build-essential texinfo libncurses-dev ``` 上述命令会下载编译 GDB 所需的基础组件以及支持调试功能的相关头文件和静态链接库[^1]。 #### 2. 下载源码包 访问 GNU 官方网站获取最新版本的 GDB 源代码压缩包或者通过 Git 版本控制系统拉取仓库中的内容: ```bash git clone https://sourceware.org/git/binutils-gdb.git cd binutils-gdb ``` #### 3. 配置与编译 进入解压后的目录之后执行 `configure` 脚本来初始化项目结构,并指定交叉编译选项以便适配特定硬件架构(假设这里的目标体系结构为 ARM Cortex-A 系列处理器)。接着利用 Make 工具生成最终二进制文件。 ```bash mkdir build && cd build ../configure --target=arm-linux-gnueabihf --prefix=/opt/cross-tools/arm-linux-gnueabihf/ make -j$(nproc) sudo make install ``` 注意:这里的路径 `/opt/cross-tools/...` 可以替换为你希望放置跨平台工具链的位置;同时 `-j$(nproc)` 参数表示并发作业数等于当前 CPU 核心数量,从而加速整个构建流程[^2]。 #### 4. 处理权限问题 (针对 macOS 或其他特殊操作系统) 对于某些特殊的主机环境像 Mac OS X 来说,可能还需要额外处理签名验证失败的问题。具体做法参照之前提到的方法——即先定位到实际 gdb 文件所在位置再对其进行重新签署认证动作: ```bash which arm-linux-gnueabihf-gdb codesign -fs your-cert-name $(which arm-linux-gnueabihf-gdb) ``` 其中 `your-cert-name` 应该替换成你自己创建的有效证书名。 #### 5. 测试远程调试连接 最后一步就是确认本地机器上的客户端能否正常连通远端服务器实例。假定已经部署好了一个监听于 IP 地址 `192.168.x.y` 和端口号 zzzz 上的服务进程,则只需简单键入下面这条指令即可发起握手请求尝试建立通信信道: ```bash /opt/cross-tools/bin/arm-linux-gnueabihf-gdb ./my_program (gdb) target remote 192.168.x.y:zzzz ``` 此时应该能够看到类似于这样的提示消息表明一切准备就绪等待进一步分析工作开展:“Remote debugging using ...”。 --- ### 注意事项 有时可能会遇到警告信息例如 “Can not parse XML syscalls information”,这通常是由于缺少 Python 解析模块造成的。解决办法很简单只需要再次回到 configure 步骤加上相应参数开启嵌套特性开关就可以了: ```bash ../configure --enable-python ... ``` 另外值得注意的一点是不同厂商生产的 SoC 往往存在细微差异因此最好查阅官方文档了解确切的技术规格后再做决定选用哪款预定义好的模板最为合适[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值