这是我昨天第一次更新到macOS Sierra时出现的问题。
GDB本身运行正常。但是,不知何故,它无法运行我的程序。当我输入'run'和'enter'时,它会立即崩溃并显示以下信息:
During startup program terminated with signal SIG113, Real-time event 113.
我的GDB基于自制软件。所以今天,我卸载了整个自制程序包并重新安装它。在编码协议步骤之后,我仍然面临同样的错误。
我试过'sudo'和其他一些东西。谷歌不知道发生了什么。所以我想知道你们是否有一些神奇的解决方案。
答案 0 :(得分:60)
这就是我轻松解决问题的方法。 [更新:基于收到的反馈并且尚未得到验证,似乎此解决方案适用于macOS Sierra 10.12但不适用于macOS Sierra 10.12.2]
请参阅视频说明here
>>> from xml.dom.minidom import parseString
>>> def get_tags(xml, tag_name):
... return [d.childNodes[0].data for d in parseString(xml).getElementsByTagName(tag_name)]
...
>>> sc.wholeTextFiles('xmls').flatMap(lambda file: get_tags(file[1], "text")).collect()
[u'1111', u'2222', u'3333', u'4444', u'5555', u'6666']
的文件。.gdbinit
来源
https://discussions.apple.com/thread/7684629?start=0&tstart=0
答案 1 :(得分:10)
更新到macOS Sierra后我遇到了同样的错误。暂时我使用库lldbmi2将调试器更改为LLDB:
1。 git clone https://github.com/freedib/lldbmi2.git lldbmi2
2。 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一样。
答案 2 :(得分:5)
这是由于Sierra中的运行时完整性保护功能 - 您可以按照here的说明停用它。
- 重启系统保持命令+ R按下直到Apple徽标 出现在屏幕上。
- 在终端
中选择菜单Utilities / Terminal Type“csrutil enable --without debug”- 最后,重新启动机器
醇>请注意,禁用此功能会降低系统的安全性,因此 做上述事情应该是你的决定。
此更改的另一个影响是DYLD_LIBRARY_PATH变量 通过shell生成新进程时不再重置。这个 动态链接器使用变量来查找动态库。它 优先于可执行文件中编码的搜索路径,所以 操作系统认为不安全。因此,macOS默认取消设置 变量,以便您生成的可执行文件使用自己的库。 我们建议使用DYLD_FALLBACK_LIBRARY_PATH来代替 在应用程序的库搜索路径之后,以防一些库 仍未找到。
答案 3 :(得分:5)
适用于Sierra 10.12.0的多种解决方案不适用于Sierra 10.12.1。在这个版本中,您需要更新版本的GDB(11月9日在FSF上提交的补丁),此外还要通过“设置启动时关闭shell”来禁用shell的产生。请参阅http://blog.adacore.com/gnat-on-macos-sierra
上的说明答案 4 :(得分:5)
假设您的MacOS版本是10.12.6。
brew upgrade gdb
echo "set startup-with-shell off" >> ~/.gdbinit
(当我通过brew安装gdb时,我看到了这个命令)gdb-cert
的证书,并在代码签名选项中信任此证书sudo codesign -s gdb-cert /usr/local/bin/gdb
答案 5 :(得分:4)
我和Sierra有过多个问题。
对于初学者来说,我之前的OSX版本的代码已停止工作 在这个版本上。它也不会编译。此外,brew的GDB是一个完整的混乱。添加其他第三方库已被破坏(例如libevent)。
("干得好" Apple)。
"升级"到Sierra我建议采取以下步骤让GDB工作:
安装较新的gcc(大约需要60分钟 - 取决于您的CPU等...)
brew install gcc
下载GDB的源代码
由于gcc和g ++是旧gcc的别名而g ++确保将其链接到较新的gcc和g ++,例如:
导出CC =`gcc-6`
导出CXX =`哪个gxx-6`
配置&编译gdb:
./配置
make CFLAGS = -Wno-error = deprecated-declarations CXXFLAGS = -Wno-error = deprecated-declarations
sudo make install
答案 6 :(得分:4)
这对我有用:
取消链接当前gdb:brew unlink gdb
安装gdb 8.0.1:brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9ec9fb27a33698fc7636afce5c1c16787e9ce3f3/Formula/gdb.rb
可选:避免使用brew pin gdb
答案 7 :(得分:2)
我知道我的答案与GDB没有特别的关系,但由于我在使GDB自己工作方面遇到了一些困难,我还是建议你试试LLDB。对我来说,它就像一个魅力:
由于Xcode本身现在使用LLDB而不是GDB,因此对于Mac用户来说,这可能是一种更方便的选择。而且,在我的特定情况下,它在Eclipse中比GDB更容易集成:
https://wiki.eclipse.org/CDT/User/FAQ#How_do_I_get_the_LLDB_debugger.3F
答案 8 :(得分:2)
截至今天的更新(2021-04-08,Big Sur 11.2.3 (20D91),gdb 版本 10.1):I got it to work 和 some patches。
brew install --build-from-source domq/gdb/gdb
安装 gdbnot in executable format: file format not recognized
),您可能需要“un-fat” it first:lipo -thin x86_64 -output ls-x86_64 /bin/ls
⚠ 您目前似乎无法break main
— 我可能会也可能不会很快回复您。