【问题标题】:Unknown ending signal when using debugger gdb使用调试器 gdb 时出现未知的结束信号
【发布时间】:2017-02-27 20:33:46
【问题描述】:

我已经在 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;

}

我编译的时候报错,正常(segmentation fault)

但是,当 在编译命令中添加 -g 标志 并在我编译的程序上运行 gdb 时,我在启动命令 run

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

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

【问题讨论】:

  • 您应该尝试下面的解决方案,并指出哪一个可以帮助您解决问题。

标签: c macos gdb


【解决方案1】:

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

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

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

这是使它工作所必需的。我还必须确保在 Eclipse 调试配置中设置了 .gdbinit

【讨论】:

  • 它适用于 High Sierra 10.13.2 以及 gdb 8.0(从源代码安装)和 Visual Studio Code。
  • gdb 版本 8.2.50.20190106-git 的 GDB 手册;此错误的第 28 页状态:(the error) which indicates the shell or the wrapper specified with ‘exec-wrapper’ crashed, not your program.,因此此解决方案有效。
【解决方案2】:

对我来说,它在 MacOS Sierra 版本 10.12.4 上完美运行,只需将 gdb 卸载并安装为,

  1. 卸载 GDB

$ brew 卸载 gdb

  1. 安装 GDB

$ brew install gdb

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

希望这对任何人都有帮助!

【讨论】:

    【解决方案3】:

    Sierra (10.12) 似乎不支持gdb。我尝试按照让我创建证书的教程进行操作。之后,当我运行gdb 时,我得到了同样的错误。

    Apple 使用lldb。有人告诉我,它运行良好,并且可以与 Eclipse 集成。这是link

    【讨论】:

    • 投反对票,因为如果您按照上述说明进行操作,Sierra 将支持 gdb。 echo "set startup-with-shell off" >> ~/.gdbinit 您还必须为 gdb 创建一个证书才能工作:请参阅:stackoverflow.com/questions/49001329/… 是的,这很麻烦,但值得拥有 gdb。您可以选择运行“brew doctor”以确保您的代码是最新的。
    【解决方案4】:

    来自这个答案: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

    【讨论】:

    • 签署 gdb 后为我工作。为简化起见,您可以从终端运行这些命令:touch ~/.gdbinit;set startup-with-shell off&gt;~/.gdbinit
    • 命令错误。 touch ~/.gdbinit;echo "set startup-with-shell off"&gt;~/.gdbinit是对的
    • 与上面的评论不同,如果你不想删除你当前的~/.gdbinittouch ~/.gdbinit; echo "set startup-with-shell off" &gt;&gt; ~/.gdbinit
    【解决方案5】:

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

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

    【讨论】:

    • 一定要向下滚动,下面可能有解决方案
    • 另外,为了记录,它也不适用于 High Sierra(版本:10.13.2 (17C88))。我得到同样的错误:During startup program terminated with signal ?, Unknown signal.
    猜你喜欢
    • 2019-02-06
    • 2022-08-05
    • 2019-05-13
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多