Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 我如何从GDB解释这个错误?_Debugging_Segmentation Fault_Gdb - Fatal编程技术网

Debugging 我如何从GDB解释这个错误?

Debugging 我如何从GDB解释这个错误?,debugging,segmentation-fault,gdb,Debugging,Segmentation Fault,Gdb,我现在觉得自己很笨,但是我如何在GDB中解释这个消息呢 Program received signal SIGSEGV, Segmentation fault. 0x00007fe2eb46073a in clearerr (fp=0x4359790) at clearerr.c:27 27 clearerr.c: No such file or directory. in clearerr.c 导致SEG故障的文件丢失了?是clearerr.c还是clearerr试图访问的文件?s

我现在觉得自己很笨,但是我如何在GDB中解释这个消息呢

Program received signal SIGSEGV, Segmentation fault.
0x00007fe2eb46073a in clearerr (fp=0x4359790) at clearerr.c:27
27  clearerr.c: No such file or directory.
    in clearerr.c

导致SEG故障的文件丢失了?是clearerr.c还是clearerr试图访问的文件?

seg故障是由clearerr.c试图访问的文件引起的(在第27行)

导致SEG故障的文件丢失了

我们不知道是什么导致了SIGSEGV,但不太可能有任何丢失的文件与此有关

首先,这是:

clearerr.c: No such file or directory.
简单地说,GDB不能向您显示发生
SIGSEGV
的源代码。这是因为
clearr()
libc
的一部分,并且您没有为
libc
安装源代码(它们甚至可能不适用于您的环境),或者您没有告诉GDB如何查找这些源代码

其次,
SIGSEGV
的实际原因很可能是因为调用它的
fp
已损坏或以其他方式无效

以下是一些可能发生这种情况的方法:

 char c;
 FILE *fp = (FILE*) &c;  // fp is bogus: doesn't point to a FILE at all
 clearerr(fp);           // likely will crash

 FILE *fp2;              // fp2 contains uninitialized garbage
 clearerr(fp2);          // likely will crash

 FILE *fp3 = fopen("/tmp/foo", "w");
 fclose(fp3);            // destroys fp3
 clearerr(fp3);          // accesses dangling memory, likely will crash
当然还有很多其他的方法。您需要查看
clearr
的调用方,看看它是否在做一些愚蠢的事情。要查找调用者,请使用GDB
where
命令