如何在MacOS 10.13.3(High Sierra)上安装GDB

Zak*_*Zak 8 macos gdb

有大量的帖子和博客讨论这个话题,但似乎没有什么工作......

从互联网上,以下是有关安装和运行所需程序的共识gdb.

  1. 安装 gdb

    brew install gdb
    
    Run Code Online (Sandbox Code Playgroud)

    Homebrew"成功"安装 gdb v8.1

  2. 协同设计 gdb

    协同设计gdb由以下的代码签名程序 (如在一个单独的SO后详述).

  3. 更新 ~/.gdbinit

    echo "set startup-with-shell off" >> ~/.gdbinit
    
    Run Code Online (Sandbox Code Playgroud)

在完成所有步骤之后,当我尝试调试一个简单的"hello world"程序时,我得到了SIGTRAP因抛出而导致的以下启动错误.

(gdb) start
Temporary breakpoint 1 at 0x100000e66: file test.cpp, line 5.
Starting program: /Users/zfields/Documents/Development/test/a.out
[New Thread 0x1703 of process 67971]
[New Thread 0x1903 of process 67971]
During startup program terminated with signal SIGTRAP, Trace/breakpoint trap.
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Zak*_*Zak 12

经过几个小时的搜索,我终于找到了一个晦涩的要点,确定了问题并详细说明了解决方案.

TL; DR GNU调试器需要一个补丁才能与MacOS一起使用.gdb v8.0.1是MacOS GDB的最后一个很好的版本.

  1. 卸载最新版本gdb(即v8.1)

    brew uninstall --force gdb
    
    Run Code Online (Sandbox Code Playgroud)
  2. 强制Homebrew安装gdb适用于MacOS的补丁版本.

    brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c3128a5c335bd2fa75ffba9d721e9910134e4644/Formula/gdb.rb
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用现有证书对新安装进行编码 gdb

    codesign -f -s  "<GNU GDB Certificate>" $(which gdb)
    
    Run Code Online (Sandbox Code Playgroud)

现在,gdb按预期工作!

特别感谢https://github.com/marcoparentehttps://github.com/lokoum的主要评论!

  • 为什么苹果让这一切变得如此困难。我已经让整件事都奏效了。一次系统升级让我又到处搜索。 (2认同)
  • 我很快就会放弃这台 MacBook,转而使用纯 Linux ……所以对用户不友好。 (2认同)