gdb on macOS

栏目: C · 发布时间: 7年前

内容简介:最近在 mac 上使用 gdb 调试程序的时候,突然发现 gdb 不能很好的运行。下面是我遇到的一些坑。1.使用 Homebrew 安装2.禁止 gdb 更新。

最近在 mac 上使用 gdb 调试程序的时候,突然发现 gdb 不能很好的运行。下面是我遇到的一些坑。

环境

  • macOS High Sierra 10.13.6
  • Homebrew 1.7.5

安装 gdb

1.使用 Homebrew 安装 gdb 8.0.1

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9ec9fb27a33698fc7636afce5c1c16787e9ce3f3/Formula/gdb.rb

2.禁止 gdb 更新。

brew pin gdb

3.如果未禁用 SIP,请运行下面命令。

echo  "set startup-with-shell off"  >>〜/ .gdbinit

注意:最新的 gdb 版本为 8.1,但是 gdb 8.1 似乎并不支持 macOS 10.13,因此需要安装 gdb 8.0.1。下面是运行 gdb 8.1 会遇到的错误:

During startup program terminated with signal SIGTRAP, Trace/breakpoint trap.

签名

不进行签名,gdb 运行 run 命令时会出现以下错误。

(gdb) break main
Breakpoint 1 at 0x100000f56: file inform.c, line 4.
(gdb) run
Starting program: inform
Unable to find Mach task port for process-id 8442: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

1.打开系统工具 Keychain Access

open /Applications/Utilities/Keychain\ Access.app

2.创建证书

gdb on macOS

3.输入证书名、身份类型、证书类型,并勾选默认覆盖。

gdb on macOS

4.一直确认完成创建。

5.将 Login 中刚刚创建的证书导出。

gdb on macOS

6.将导出的证书导入到 System 中。

gdb on macOS

7.信任证书,选择 “Always Trust”。

gdb on macOS

8.将证书授予 gdb。

sudo codesign $(which gdb) -s gdb-cert

9.验证 gdb,没有输出即授权成功。

codesign -v $(which gdb)

至此,gdb 就可以正常使用了。

注意

1.将 Login 和 System 的 All Iterms 中所有相关的项目都删除然后再重试。

2.杀死 taskgated 程序。

ps -e | grep taskgated
sudo kill -9 xxx

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精通Spring

精通Spring

罗时飞 / 第1版 (2005年4月1日) / 2005-4 / 39.0

本书深入剖析了当前流行的轻量级开发框架Spring技术。本书总共分成3部分。第一部分,重点阐述Spring的架构。这部分内容循序渐进带领开发者进入Spring中。主要在于阐述Spring IoC和Spring AOP。第二部分,重点阐述Spring的使用。这部分内容从简化Java/J2EE的角度出发,从J2EE平台各个技术层面分析、并给出大量的研究实例,对Spring提供的API进行阐述。主要在于......一起来看看 《精通Spring》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试