C 使用调试器gdb时出现未知的结束信号

C 使用调试器gdb时出现未知的结束信号,c,macos,gdb,C,Macos,Gdb,我已经在MacOSX上安装了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]

我已经在MacOSX上安装了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;

}

真的不知道它从哪里来。我已经添加了一个证书,以确保gdb在OS X上正常工作,但我没有找到任何方法来解决此问题。

如果您在Sierra上,这是意料之中的。 GDB与macOS Sierra不兼容,即使是最新版本(7.12)

我们也许应该等待GDB的另一个版本,或者macOS的另一个更新,以便修复这个bug。

从这个答案:

这就是我轻松解决问题的方法。[更新:根据收到的反馈和有待验证的信息,此解决方案似乎适用于macOS Sierra 10.12,但不适用于macOS Sierra 10.12.2]

请参见此处的视频说明

退出gdb

使用文本编辑器(例如升华文本),在用户文件夹中保存一个名为“.gdbinit”[排除引号]的文件

在文件中添加以下内容:“在关闭shell的情况下设置启动”[排除引号]

保存文件

gdb现在应该可以工作了

来源

gdbinit位于何处,如何编辑它

Sierra(10.12)似乎不支持
gdb
。我试着按照一个教程创建一个证书。之后,当我运行
gdb
时,我得到了前面提到的相同错误


苹果使用
lldb
。有人告诉我,它工作得很好,可以与Eclipse集成。这是一个。

对我来说,它在MacOS Sierra 10.12.4版上运行得非常好,只需卸载并安装gdb as

  • 卸载GDB
  • $brew卸载gdb

  • 安装GDB
  • $brew安装gdb

    这将安装与MacOS Sierra兼容的最新gdb


    希望这对任何人都有帮助

    我通过自制软件安装了gdb。 在安装结束时,它说:

    在10.12(Sierra)或更高版本的SIP中,您需要运行以下命令:

    echo "set startup-with-shell off" >> ~/.gdbinit
    

    这是使它发挥作用所必需的。此外,我还必须确保在Eclipse调试配置中设置了
    .gdbinit
    ,请参见。请确保向下滚动,下面可能列出了一个解决方案。因此,仅就记录而言,它在High Sierra(版本:10.13.2(17C88))上也不起作用。我得到了相同的错误:
    在启动过程中,程序以信号?终止,未知信号。
    在签署gdb后为我工作。为了简化,您可以从终端运行以下命令:
    touch~/.gdbinit;关闭shell设置启动>~/.gdbinit
    命令错误<代码>触摸~/.gdbinit;echo“在关闭外壳的情况下设置启动”>~/.gdbinit是正确的。与上述注释不同,如果您不想删除当前的
    ~/.gdbinit
    触摸~/.gdbinit;echo“使用shell off设置启动”>~/.gdbinit
    您应该尝试下面的解决方案,并指出哪种解决方案帮助您解决了问题。它与gdb 8.0(从源代码安装)和Visual Studio code.gdb手册(适用于gdb 8.2.50.20190106-git版本)一起在High Sierra 10.13.2上工作;第28页对此错误进行了说明:
    (该错误)表示使用“exec wrapper”指定的shell或包装器崩溃,而不是您的程序。
    ,因此此解决方案有效。否决,因为如果您按照上述说明操作,Sierra将支持gdb。echo“setstartuptwithshell off”>>~/.gdb您还必须为gdb创建一个证书才能工作:请参阅:是的,这很麻烦,但拥有gdb是值得的。您可以选择运行“brew doctor”,以确保您的代码是最新的。
    echo "set startup-with-shell off" >> ~/.gdbinit