这是我昨天第一次更新到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]
请在此处查看视频说明
.gdbinit 在用户文件夹中调用的文件.set startup-with-shell off来源
https://discussions.apple.com/thread/7684629?start=0&tstart=0
https://sourceware.org/gdb/onlinedocs/gdb/Starting.html
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中的运行时完整性保护功能 - 您可以按照此处的说明停用它.
- 重新启动系统按住命令+ R按钮,直到屏幕上出现Apple徽标.
- 在终端中选择菜单Utilities/Terminal Type"csrutil enable --without debug"
- 最后,重新启动机器
请注意,禁用此功能会降低系统的安全性,因此执行上述操作应该是您的决定.
此更改的另一个影响是,在通过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.
brew upgrade gdbecho "set startup-with-shell off" >> ~/.gdbinit(当我通过brew安装gdb时,我看到了这个命令)gdb-cert并在代码签名选项中信任此证书sudo codesign -s gdb-cert /usr/local/bin/gdb顺便说一下,你可以使用lldb来替换gdb.