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

时间:2016-10-18 14:05:18

标签: c macos 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时,我在启动命令运行

之后会收到此消息
During startup program terminated with signal ?, Unknown signal.

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

5 个答案:

答案 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位于何处,如何编辑?

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

答案 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 就完美无缺,

  1. 卸载GDB
  2.   

    $ brew uninstall gdb

    1. 安装GDB
    2.   

      $ brew install gdb

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

      希望对任何人都有帮助!

答案 4 :(得分:2)

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

Apple使用lldb。我已经被告知,它运行良好,可以与Eclipse集成。这是link