VScode报错:Segmentation fault (core dumped)的解决办法

使用VScode运行程序时,报错Segmentation fault (core dumped)

注:非理论讲解,仅小白记录自己的解决过程!
  
  Ubuntu18.04 系统,使用VScode执行c++文件时,出现以上所述错误,因为是复现大佬的程序,程序报错应该不是内存访问越界或堆栈溢出的错误。

1、在编译文件时,出现了以下警告

在终端执行:g++ xx.cpp -o xx -O2 时,出现了以下警告,一开始因为只是警告,没有在意,后来把警告的地方修改后,Segmentation fault (core dumped)错误消失了。

//终端显示的警告
xxx.cpp: In functionvoid prepare(): 
xxx.cpp:350:15: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...), declared with attribute warn_unused_result [-Wunused-result]
         fscanf(f_kb,"%s",buf);
         ~~~~~~^~~~~~~~~~~~~~~
xxx.cpp:352:15: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...), declared with attribute warn_unused_result [-Wunused-result]
         fscanf(f_kb,"%s",buf);
         ~~~~~~^~~~~~~~~~~~~~~

2、解决过程

  1. 按照警告提示,定位到xxx.cpp 350行
  2. 修改350,352行代码(以350行为例)
350while (fscanf(f1,"%s%d",buf,&x) == 2)
351:  {
352:	 XXX;
353:  }
  1. 修改为:
int temp;
while ((temp = fscanf(f1,"%s%d",buf,&x)) == 2)
{
	XXX;
}
  1. 修改后,保存xxx.cpp,重新在终端执行编译文件即可。

追 更!

背景:

  1. 复现github上C++语言的实验,应该不是(1)内存访问越界(2)堆栈溢出 等原因。解决的过程也很迷惑,按照博客的一些教程捣鼓了一下竟然不报错了,记录一下,供他人参考。

  2. 使用gdb来调试
    首先安装gdb,终端执行命令:sudo apt-get install gdb
    安装后终端输入 gdb 查看一下,最后输入 q 退出gdb。
    VScode报错:Segmentation fault (core dumped)的解决办法_第1张图片

  3. 输入命令:

 ulimit -a
 ulimit -c unlimited

VScode报错:Segmentation fault (core dumped)的解决办法_第2张图片
第一行的core file size 由大小为 0 变成 unlimited。
4. 终端执行makefile,x是文件名,根据需要可自行命名

 g++ -g x.cpp -o x

5.执行文件 ./x

./x

6.查看

gdb ./x core

7.在gdb模式下,输入where

(gdb)where

8.输入r ,执行

(gdb)r

9.输入q,退出gdb。

注:理论讲解请参考下面前三个链接。

参考链接:
Linux程序Segmentation fault (core dumped)

linux下运行c语言程序报Segmentation Fault错误原因总结即解决办法汇总

Segmentation fault (core dumped)

Linux下 跑Python模型报错 Segmentation fault (core dumped) 一种可能的解决办法

你可能感兴趣的:(Bug)