在macOS10.14上安装GDB的教程

已剪辑自: 在macOS10.14上使用GDB的教程 - 知乎

背景

在macOS上,用于debug的工具有lldb和gdb. 其中lldb作为一种可复用的组件,参与了大型llvm项目库的构成;同时,lldb也是Xcode默认的调试工具, 支持Windows, macOS, iOS, Linux和FreeBSD. 而gdb是GNU项目的调试器,支持Windows和大多数UNIX变种,也包括macOS.

相比而言,lldb是苹果的"亲儿子",所以当我们调试Objective-C和swift的程序的时候,倾向于使用lldb. 但是,lldb也有其力所不能及之处,那就是多语言支持。lldb仅支持C, C++, Objective-C, 而对swift的支持也是Apple自己编写的swift-lldb(apple/swift-lldb)才行得通的。因此,当我们使用macOS进行其他语言(如汇编等)的编程时,往往使用gdb来进行调试。

但是,自从macOS进入10.14以后,对这类调试工具的要求越来越苛刻,现在国内网上找到的许多教程都已经过时,按照教程做依然不能完成。下面,我就从安装开始,一直介绍到能顺利运行gdb.

安装

建议使用homebrew安装,即在终端中键入

brew install gdb

安装完成后,gdb应该会位于/usr/local/bin/gdb

然后在终端中键入gdb, 就会出现

b0da2aec07df43cbbda63ccb6f5f47ad.jpeg


 

gdb
GNU gdb (GDB) 8.3
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <The GNU General Public License v3.0- GNU Project - Free Software Foundation>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin18.5.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb)

键入q并回车即可退出。

证书签名

在使用homebrew下载完gdb之后,是不能立刻使用的。比如说我有一个最基础的x86-64汇编程序test.asm:

SECTION .data


EatMsg: db "I'm Evian Zhang.", 0x0a
EatLen: equ $-EatMsg

SECTION .bss

SECTION .text

global main

main:
    nop
    mov rax,0x2000004
    mov rdi,1
    mov rsi,EatMsg
    mov rdx,EatLen
    syscall

    mov rax,0x2000001
    mov rdi,0
    syscall

我用nasm汇编,ld链接完成之后的文件test, 运行一下,结果是输出I'm Evian Zhang.

./test
I'm Evian Zhang.

1b76f148ad0649c4839725c7fbfaaeac.png


 

但是,如果我使用gdb test对test进行调试,然后在命令行中键入run, 则会报错:

>run

Starting program: /Users/evian/Downloads/test/test

Unable to find Mach task port for process-id 358: (os/kern) failure (0x5).

(please check gdb is codesigned - see taskgated(8))

这是没有证书的缘故。接下来,我们需要使用证书对gdb进行签名:

  1. 打开应用程序>其他>钥匙串访问

6b71db95ae624858968f6c09e027910e.jpeg


2. 在菜单栏中选择证书助理>创建证书

e654e4d93a76474f83839b50dabf33b0.jpeg


3. 名称随便填(比如说gdb_cert), 身份类型为「自签名根证书」,证书类型为「代码签名」,并勾选「让我覆盖这些默认值」。

02abfd38f5864614a358143ea569d1d4.jpeg


4. 一路继续,直到让我们指定用于该证书的位置,选择「系统」。然后输入密码即可创建。

a5db6868c4f941a19aa94534b057fd96.jpeg


5. 接着,我们可以在「系统」钥匙串的「我的证书」种类中找到这个证书。

a6afb8df56264d65928275285f8594a5.jpeg


6. 双击该证书打开,然后展开「信任」栏目,将「使用此证书时」选择为「始终信任」,关闭时输入密码即可保存。

1a70e129d085469eb99cb4ad9a497b01.jpeg


7. 新建一个叫做gdb-entitlement.xml的文件,其内容为
 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.cs.debugger</key>
    <true/>
</dict>
</plist>

8. 在终端键入

codesign --entitlements gdb-entitlement.xml -fs gdb-cert /usr/loacl/bin/gdb

配置gdb

在签名过后,我们终于可以使用gdb了,但是,当我们输入run的时候,新的问题出现了:

>run
Starting program: /Users/evian/Downloads/test/test
[New Thread 0x1803 of process 1090]
[New Thread 0x1903 of process 1090]

然后整个gdb就卡住了,必须使用control+Z才能退出。

我们需要在命令行中键入

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

然后就可以正常使用gdb了。

 

  • 21
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在 macOS 10.14安装 Git,可以按照以下步骤进行操作: 1. 打开终端(Terminal)应用程序。 2. 如果您之前没有安装过 Homebrew,可以使用以下命令来安装 Homebrew: ``` /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ``` 3. 安装 Git,使用以下命令: ``` brew install git ``` 4. 等待安装完成后,可以通过以下命令来验证 Git 是否安装成功: ``` git --version ``` 如果 Git 版本号被正确显示,说明安装成功。 注:以上命令需要联网才能执行。 ### 回答2: 在macOS10.14安装Git可以通过以下步骤完成: 1. 打开终端:点击Launchpad,找到并点击“终端”图标,或者使用 Spotlight 搜索并打开。 2. 检查是否已经安装了Homebrew:在终端中输入`brew -v`,如果能够看到版本号信息,则表示已经安装了Homebrew。如果没有安装,请按照Homebrew官方网站上的指引进行安装。 3. 使用Homebrew安装Git:在终端中输入以下命令并按下Enter键: ``` brew install git ``` 4. 等待安装完成:Homebrew会自动下载和安装Git,安装完成后将会在终端中显示安装日志。 5. 验证安装结果:在终端中输入`git --version`,如果能够看到安装的Git的版本号,说明安装成功。 现在您在macOS10.14上已经成功安装了Git。您可以在终端中使用Git命令进行代码版本控制,例如克隆代码仓库、提交更改等操作。 ### 回答3: 在macOS10.14安装Git有几种方法可以选择: 1. 使用Homebrew安装:Homebrew是一个macOS上常用的包管理器,可以方便地安装各种软件。首先,需要确保已经安装了Homebrew。在终端中输入以下命令安装Git: ``` brew install git ``` 安装完成后,可以使用以下命令验证安装是否成功: ``` git --version ``` 终端将显示Git的版本信息。 2. 下载安装程序:访问Git官方网站(https://git-scm.com/downloads ),选择适用于macOS安装程序进行下载。下载完成后,双击打开.pkg文件,按照安装向导进行安装安装完成后,可以在终端中使用以下命令验证安装是否成功: ``` git --version ``` 终端将显示Git的版本信息。 上述两种方法都可以成功安装Git,具体选择哪种方法取决于个人偏好和需求。无论选择哪种方法,安装完成后,应该可以在终端中使用Git命令来管理版本控制库。 最后值得一提的是,无论使用哪种方法安装Git,始终建议使用官方的下载网站或者Homebrew来获取安装程序,以确保软件的安全性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值