【问题标题】:How do I view more information on this fault [duplicate]如何查看有关此故障的更多信息 [重复]
【发布时间】:2016-02-11 04:39:41
【问题描述】:

运行我的 c 代码时,我不断收到错误消息 分段错误(核心转储)

这就是我收到的全部内容。有没有办法让我从这个错误中看到更多? IE。通过 c 代码顶部的 c 库?

【问题讨论】:

  • 一些代码看看会发生什么?
  • 除了使用调试器吗?
  • 试试gdb --> gnu.org/software/gdb
  • 竞态条件与此有什么关系?
  • @Michi,对于没有调试器的初学者来说,这有点难以发现。

标签: c linux


【解决方案1】:

消息core dumped 表示已创建核心文件。核心文件是包含内存所有内容的文件,与刚刚崩溃的进程相关(核心转储通常在应用程序崩溃时创建)。

您可以做两件事:您可以通过查看程序何时发生这种情况来查找原因,或者您可以调查核心转储,以了解导致这种情况的错误类型。在大多数情况下,这可以通过从核心转储中读取调用堆栈来完成。 核心转储可以位于任何地方,我知道它是在运行进程的运行时目录中创建的,我知道核心转储自动移动到/var/core 的情况。关于读取核心转储的应用程序,我使用过dbxgdb,但我认为ladebug 也可能有用。

我知道,我提出了很多新问题,但我希望您现在知道可以从哪些方向寻找更多信息。

【讨论】:

    【解决方案2】:

    您可以使用调试器来查找导致此错误的行。这应该足以解决您的问题。 Segmentation fault 通常是由访问不可用的内存位置引起的。例如,考虑以下代码:

    int array[5];
    array[2] = 10; // OK
    array[20] = 10; // Segmentation fault
    

    这通常发生在您在编写循环时出错。

    有关如何使用 GDB 调试程序的示例,请参阅 this question

    首先编译你的程序:

    gcc program.c -g -o program
    

    然后使用gdb:

    gdb ./program
    (gdb) run
    <segfault happens here>
    (gdb) backtrace
    <offending code is shown here>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-20
      • 1970-01-01
      相关资源
      最近更新 更多