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

Pie*_* P. 28 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;

}
Run Code Online (Sandbox Code Playgroud)

编译时出错,这是正常的(分段错误)

但是,在编译命令中添加-g标志并在我编译的程序上运行gdb时,我在启动命令运行后收到此消息

During startup program terminated with signal ?, Unknown signal.
Run Code Online (Sandbox Code Playgroud)

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

Par*_*tra 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现在应该可以工作了

来源

/sf/answers/2830640781/

https://discussions.apple.com/thread/7684629?start=0&tstart=0

.gdbinit位于何处,如何编辑?

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

  • 命令错了.`touch~/.gdbinit; echo"set startup-with-shell off">〜/ .gdbinit`是对的 (7认同)

小智 27

如果你在塞拉利昂,那是预期的.GDB与macOS Sierra不兼容,甚至是最后一个版本(7.12).

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

  • 请参阅http://stackoverflow.com/questions/39702871/gdb-kind-of-doesnt-work-on-macos-sierra. (7认同)
  • 请务必向下滚动,下面列出了可能的解决方案 (4认同)

小智 9

我通过Homebrew安装了gdb.在安装结束时它说:

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

echo "set startup-with-shell off" >> ~/.gdbinit
Run Code Online (Sandbox Code Playgroud)

这是使它工作的必要条件.此外,我必须确保.gdbinit在Eclipse Debug配置中设置了它


Pan*_*kaj 5

对我来说,只需卸载并安装gdb,就可以在MacOS Sierra版本10.12.4上完美地工作,

  1. 卸载GDB

$ brew uninstall gdb

  1. 安装GDB

$ brew安装gdb

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

希望对任何人都有帮助!