GDB类型不适用于macOS Sierra

Sco*_*ang 41 gdb macos-sierra

这是我昨天第一次更新到macOS Sierra时出现的问题.

GDB本身运行正常.但是,不知何故,它无法运行我的程序.当我输入'run'和'enter'时,它会立即崩溃并显示以下信息: During startup program terminated with signal SIG113, Real-time event 113.

我的GDB基于自制软件.所以今天,我卸载了整个自制程序包并重新安装它.在编码协议步骤之后,我仍然面临同样的错误.

我试过'sudo'和其他一些东西.谷歌不知道发生了什么.所以我想知道你们是否有一些神奇的解决方案.

Sal*_*mit 60

这就是我轻松解决问题的方法.[更新:根据收到的反馈意见,尚未得到验证,似乎此解决方案适用于macOS Sierra 10.12但不适用于macOS Sierra 10.12.2]

在此处查看视频说明

  1. 退出gdb
  2. 使用文本编辑器(例如Sublime Text),保存.gdbinit 在用户文件夹中调用的文件.
  3. 在文件中添加以下内容: set startup-with-shell off
  4. 保存文件
  5. gdb现在应该可以工作了

来源

https://discussions.apple.com/thread/7684629?start=0&tstart=0

.gdbinit位于何处,如何编辑?

https://sourceware.org/gdb/onlinedocs/gdb/Starting.html

  • 不解决OS X Sierra的问题(对我而言). (33认同)
  • 要使这项工作,在"调试配置" - >"调试器"选项卡中指定gdb和.gdbinit的绝对路径非常重要. (6认同)
  • 这对我有用.我正在使用macOS 10.12.4(16E195) (3认同)
  • @ user2664470它似乎不适用于macOS Sierra 10.12.2.你的macOS版本是什么? (2认同)
  • 它对我不起作用。我收到错误消息:“在启动程序期间因信号终止?,未知信号”。我有 Sierra 10.12.3。 (2认同)
  • gdb 8.1.1(当前版本)不适用于macOS 10.12.6(我的)以及后来的,我想是的.签名和.gdbinit说明很简单,我们做错了.我相信gdb 8.1.1代码中存在一个错误.我把gdb的评级降级到了8.0.1,它就像一个魅力,感谢@Hongbo Liu在这里回答/sf/answers/3437290811/ (2认同)

Mic*_*łek 11

更新到macOS Sierra后我得到了同样的错误.暂时我使用库lldbmi2将调试器更改为LLDB :
1.2 git clone https://github.com/freedib/lldbmi2.git lldbmi2
. cd lldbmi2
3. mkdir build
4. cd build
5. cmake ../
6. make
7.sudo make install

安装lldbmi2之后,您可以通过在Debug Configurations中创建一个新的C/C++应用程序来调试您的应用程序......并将GDB调试器(在Debugger选项卡中)从gdb更改为lldbmi2.可以在那里设置lldbmi2的选项.像/ usr/local/bin/lldbmi2 --log这样的东西.

在此输入图像描述

一切似乎都很好,就像GDB一样.


小智 5

这是由于Sierra中的运行时完整性保护功能 - 您可以按照此处的说明停用它.

  1. 重新启动系统按住命令+ R按钮,直到屏幕上出现Apple徽标.
  2. 在终端中选择菜单Utilities/Terminal Type"csrutil enable --without debug"
  3. 最后,重新启动机器

请注意,禁用此功能会降低系统的安全性,因此执行上述操作应该是您的决定.

此更改的另一个影响是,在通过shell生成新进程时,不再重置DYLD_LIBRARY_PATH变量.动态链接器使用此变量来查找动态库.它优先于可执行文件中编码的搜索路径,因此被OS视为不安全.因此,macOS默认取消设置变量,以便您生成的可执行文件使用自己的库.我们建议使用DYLD_FALLBACK_LIBRARY_PATH,它位于应用程序的库搜索路径之后,以防仍然找不到某些库.


小智 5

适用于Sierra 10.12.0的多个解决方案不适用于Sierra 10.12.1.使用此版本,您需要更新版本的GDB(11月9日在FSF上提交的补丁),此外还需要通过'set startup-with-shell off'禁用shell的产生.请参阅http://blog.adacore.com/gnat-on-macos-sierra上的说明


小智 5

假设您的MacOS版本是10.12.6.

  1. 将您的gdb升级到8.0.1版 brew upgrade gdb
  2. 执行echo "set startup-with-shell off" >> ~/.gdbinit(当我通过brew安装gdb时,我看到了这个命令)
  3. 使用名称创建证书gdb-cert并在代码签名选项中信任此证书
  4. 重启你的mac
  5. 执行 sudo codesign -s gdb-cert /usr/local/bin/gdb
  6. 完成了!玩得开心〜

顺便说一下,你可以使用lldb来替换gdb.