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

时间:2018-03-11 17:04:46

标签: macos gdb

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

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

  1. 安装gdb

    brew install gdb
    

    Homebrew"成功"安装gdb v8.1

  2. Codesign gdb

    按照codesigning procedure (详见单独的SO帖子)gdb进行协同设定。

  3. 更新~/.gdbinit

    echo "set startup-with-shell off" >> ~/.gdbinit
    
  4. 完成所有步骤后,当我尝试调试一个简单的" 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.
    

    我错过了什么?

3 个答案:

答案 0 :(得分:12)

经过数小时和数小时的搜索,我终于找到了obscure gist来确定问题并详细说明解决方案。

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

  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)
    
  4. 现在,gdb按预期工作!

    特别感谢https://github.com/marcoparentehttps://github.com/lokoum提出的要点!

答案 1 :(得分:0)

昨天,我让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

中的步骤

Voila!

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

答案 2 :(得分:0)

也许有些无关:

Mac OS Sierra 10.13.6 gdb 8.0.1

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

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

我发现我的系统中已经有gdbcert1。 跟随一切从7。 有效!