【问题标题】:How do I install GDB on MacOS 10.13.3 (High Sierra)如何在 MacOS 10.13.3 (High Sierra) 上安装 GDB
【发布时间】:2023-03-15 10:25:02
【问题描述】:

有很多帖子和博客讨论这个话题,但似乎没有任何效果......

互联网上关于安装和运行gdb 所需程序的共识如下。

  1. 安装gdb

    brew install gdb
    

    Homebrew“成功”安装gdb v8.1

  2. 代码设计gdb

    Codesign gdb 遵循 codesigning procedure(详见单独的 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.

我错过了什么?

【问题讨论】:

    标签: macos gdb


    【解决方案1】:

    经过几个小时的搜索,我终于找到了一个obscure gist,指出了问题并详细说明了解决方案。

    TL;DR GNU 调试器需要一个补丁才能在 MacOS 上运行。 gdb v8.0.1 是已知的最后一个适用于 MacOS 的 GDB 良好版本。

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

      brew uninstall --force gdb
      
    2. 强制 Homebrew 安装带有 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/marcoparentehttps://github.com/lokoum 的 gist cmets!

    【讨论】:

    • 这个解决方案对我不起作用,直到我将证书和两个密钥(私有和公共)从登录钥匙串导出到系统钥匙串。现在它起作用了。非常感谢。
    • 为什么 Apple 如此努力。我已经完成了整个工作。系统升级让我再次到处搜索。
    • 注意:这在最新的 OSX (Mojave) 中不起作用;降级 gdb 并不能修复 stackoverflow.com/questions/52529838/…
    • 我很快就会放弃这台 MacBook,转而使用纯 Linux ......所以用户不友好。
    【解决方案2】:

    我昨天通过以下方式让 gdb 在 Mojave 上工作:

    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:在启动期间程序以信号终止?,未知信号)

    【讨论】:

    【解决方案3】:

    可能有点无关:

    Mac OS Sierra 10.13.6 gdb 8.0.1

    与 topic-starter 有相同的错误。

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

    我发现我的系统中已经有了 gdbcert1。 从7开始关注一切。 有效!

    【讨论】:

      猜你喜欢
      • 2018-08-06
      • 2018-08-13
      • 2015-12-29
      • 2018-10-28
      • 2018-12-05
      • 2018-12-08
      • 1970-01-01
      • 2018-06-11
      • 2018-01-27
      相关资源
      最近更新 更多