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



有大量的帖子和博客在讨论这个话题,但似乎没有任何效果......

从整个互联网上,这是关于安装和运行gdb所需过程的共识。

  1. 安装gdb

    brew install gdb
    

    自制软件"成功"安装gdb v8.1

  2. 协同设计gdb

    协同设计gdb遵循协同设计过程(详见单独的SO帖子(。

  3. 更新~/.gdbinit

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

完成所有步骤后,当我尝试调试一个简单的"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.

我错过了什么?

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

DR GNU 调试器需要一个补丁才能与 MacOS 配合使用。 gdb v8.0.1是适用于MacOS的GDB的最后一个已知良好版本。

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

    brew uninstall --force gdb
    
  2. 强制自制软件安装带有 MacOS 补丁的 gdb 版本。

    brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c3128a5c335bd2fa75ffba9d721e9910134e4644/Formula/gdb.rb
    
  3. 使用现有证书共同设计gdb的新安装

    codesign -f -s  "<GNU GDB Certificate>" $(which gdb)
    

现在,gdb按预期工作!

特别感谢 https://github.com/marcoparente 和 https://github.com/lokoum 的要点评论!

我昨天通过以下方式在莫哈韦工作

a( 获取最新的 GDB 源存档(在撰写本文时,ftp://sourceware.org/pub/gdb/snapshots/current/gdb-weekly-8.2.50.20190212.tar.xz

b( 构建 GDB。我在darwin-nat.c中遇到了变量阴影的错误,所以我编辑了文件并重建了。

c( 按照 https://forward-in-code.blogspot.com/2018/11/mojave-vs-gdb.html 中的步骤操作

瞧!

(来源:Mac/Mojave上的GDB:在启动程序终止期间,信号?,未知信号(

也许有点不相关:

Mac OS Sierra 10.13.6GDB 8.0.1

与主题启动器具有相同的错误。

https://gist.github.com/gravitylow/fb595186ce6068537a6e9da6d8b5b96d

我发现我的系统中已经有 gdbcert1。遵循了 7 开始的一切。工程!

最新更新