如何查看有关此故障的更多信息

时间:2015-11-10 10:18:23

标签: c linux

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

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

2 个答案:

答案 0 :(得分:2)

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

curl -i -X POST -H 'Content-type: text/uri-list' -d 'localhost:8080/api/player/1' http://localhost:8080/api/player/0/friends

当您在编写循环时出错时,通常会发生这种情况。

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

首先编译你的程序:

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

然后使用gdb:

gcc program.c -g -o program

答案 1 :(得分:1)

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

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

我知道,我提出了许多新问题,但我希望您现在知道在哪个方向寻找更多信息。