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

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

查看所有标签

猜你喜欢:

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

Linux命令行与shell脚本编程大全 第3版

Linux命令行与shell脚本编程大全 第3版

[美]布鲁姆,布雷斯纳汉 / 门佳、武海峰 / 人民邮电出版社 / 2016-8-1 / CNY 109.00

这是一本关于Linux命令行与shell脚本编程的全方位教程,主要包括四大部分:Linux命令行,shell脚本编程基础,高级shell脚本编程,如何创建实用的shell脚本。本书针对Linux系统的最新特性进行了全面更新,不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你将轻松写出自己的shell脚本。一起来看看 《Linux命令行与shell脚本编程大全 第3版》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具