内容简介:最近在 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.创建证书
3.输入证书名、身份类型、证书类型,并勾选默认覆盖。
4.一直确认完成创建。
5.将 Login 中刚刚创建的证书导出。
6.将导出的证书导入到 System 中。
7.信任证书,选择 “Always Trust”。
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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
从界面到网络空间
(美)海姆 / 金吾伦/刘钢 / 上海科技教育出版社 / 2000-7 / 16.40元
计算机急剧改变了20世纪的生活。今天,我们凭借遍及全球的计算机网络加速了过去以广播、报纸和电视形式进行的交流。思想风驰电掣般在全球翻飞。仅在角落中潜伏着已完善的虚拟实在。在虚拟实在吕,我们能将自己沉浸于感官模拟,不仅对现实世界,也对假想世界。当我们开始在真实世界与虚拟世界之间转换时,迈克尔·海姆问,我们对实在的感觉如何改变?在〈从界面到网络空间〉中,海姆探讨了这一问题,以及信息时代其他哲学问题。他......一起来看看 《从界面到网络空间》 这本书的介绍吧!