gdb on macOS

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

内容简介:最近在 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

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

查看所有标签

猜你喜欢:

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

修改代码的艺术

修改代码的艺术

Michael Feathers / 刘未鹏 / 人民邮电出版社 / 2007-09-25 / 59.00元

我们都知道,即使是最训练有素的开发团队,也不能保证始终编写出清晰高效的代码。如果不积极地修改、挽救,随着时间流逝,所有软件都会不可避免地渐渐变得复杂、难以理解,最终腐化、变质。因此,理解并修改已经编写好的代码,是每一位程序员每天都要面对的工作,也是开发程序新特性的基础。然而,与开发新代码相比,修改代码更加令人生畏,而且长期以来缺乏文献和资料可供参考。 本书是继《重构》和《重构与模式》之后探讨......一起来看看 《修改代码的艺术》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

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

正则表达式在线测试