当使用调试器gdb时,未知的结束信号



我已经在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时,我在启动命令run

后出现此消息
During startup program terminated with signal ?, Unknown signal.

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

从这个答案: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在哪里,我怎么编辑它?

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

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

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

我是通过Homebrew安装gdb的。在安装的最后,它说:

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

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

这是使它工作所必需的。此外,我必须确保在Eclipse Debug配置

中设置了.gdbinit

对于我来说,它在MacOS Sierra Version 10.12.4上通过卸载和安装gdb作为

  1. 卸载GDB

  • 安装GDB
  • 安装gdb

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

    希望对大家有所帮助!

    Sierra(10.12)似乎不支持gdb。我试着遵循一个让我创建证书的教程。之后,当我运行gdb时,我得到了同样的错误。

    Apple使用lldb。有人告诉我,它工作得很好,可以与Eclipse集成。

    最新更新