我已经在Mac OS X上安装了GDB并测试它是否有效我已经使用了以下C程序。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int *my_array = (int *) malloc(5 * sizeof(int));
int i;
for (i = 0; i < 1000000; i++) {
my_array[i] = i;
}
free(my_array);
return 0;
}
编译时出错,这是正常的(分段错误)
但是,当在编译命令中添加-g标志并在我编译的程序上运行gdb时,我在启动命令运行
之后会收到此消息During startup program terminated with signal ?, Unknown signal.
真的不知道它来自哪里。我添加了一个证书,以确保gdb在OS X上正常工作,但我没有找到解决此问题的任何内容。
答案 0 :(得分:31)
从这个回答:https://stackoverflow.com/a/40437725/1060955
这就是我轻松解决问题的方法。 [更新:基于收到的反馈并且尚未得到验证,似乎此解决方案适用于macOS Sierra 10.12但不适用于macOS Sierra 10.12.2]
请参阅此处的视频说明
退出gdb
使用文字编辑器,例如Sublime Text,在用户文件夹中保存名为“.gdbinit”[排除引号]的文件。
在文件中添加以下内容:“set startup-with-shell off”[排除引号]
保存文件
gdb现在可以正常工作
来源
https://stackoverflow.com/a/40437725/1060955
https://discussions.apple.com/thread/7684629?start=0&tstart=0
.gdbinit位于何处,如何编辑?
答案 1 :(得分:26)
如果你是塞拉,那是预期的。 GDB与macOS Sierra不兼容,即使是最后一个版本(7.12)。
我们应该等待另一个GDB版本,或者等待macOS的另一个更新,以便修复错误。
答案 2 :(得分:9)
我通过Homebrew安装了gdb。 在安装结束时,它说:
在10.12(Sierra)或更高版本的SIP上,你需要运行它:
echo "set startup-with-shell off" >> ~/.gdbinit
这是使其运作所必需的。另外,我必须确保在Eclipse Debug配置中设置了.gdbinit
答案 3 :(得分:5)
对我来说,只需卸载并安装gdb as, MacOS Sierra版本10.12.4 就完美无缺,
$ brew uninstall gdb
$ brew install gdb
这将安装与MacOS Sierra兼容的最新gdb。
希望对任何人都有帮助!
答案 4 :(得分:2)
Sierra(10.12)似乎不支持gdb
。我尝试了一个让我创建证书的教程。之后,当我运行gdb
时,我收到了同样的错误。
Apple使用lldb
。我已经被告知,它运行良好,可以与Eclipse集成。这是link。