内容简介:最近在 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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。