精华内容
下载资源
问答
  • qt核心已转储

    千次阅读 2017-02-13 19:34:05
    qt报错核心已转储

    qt启动不了,用命令行启动报错:核心已转储

    重启系统后,会循环切入到登录界面。


    原因:显卡驱动换成了nvidIA显卡,把显卡换回原来的就好了


    展开全文
  • 核心已转储处理

    千次阅读 2019-05-17 09:58:55
    在服务器上执行某些命令时会出现崩溃,并打印核心已转储字样。如果需要分析具体log,可以按照如下步骤: 设置core file 生成,命令:ulimit -c unlimited 设置core file生成路径,命令:echo "/var/log/core-%e-%p...

    在服务器上执行某些命令时会出现崩溃,并打印核心已转储字样。如果需要分析具体log,可以按照如下步骤:

    1. 设置core file 生成,命令:ulimit -c unlimited
    2. 设置core file生成路径,命令:echo "/var/log/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
    3. 执行出错的命令生成core file,命令: <my_bin>
    4. 查看core file,如:/var/log/core-<my_bin>-xxxxx-xxxxxxxxx
    5. 使用gdb调试:gdb -c  /var/log/core-<my_bin>-xxxxx-xxxxxxxxx <my_bin>

    几个常用的GDB命令:

    l(list) ,显示源代码,并且可以看到对应的行号;

    b(break)x, x是行号,表示在对应的行号位置设置断点;

    p(print)x, x是变量名,表示打印变量x的值

    r(run), 表示继续执行到断点的位置

    n(next),表示执行下一步

    c(continue),表示继续执行

    q(quit),表示退出gdb

    展开全文
  • 段错误(核心已转储)问题的分析方法

    万次阅读 多人点赞 2017-05-13 21:45:53
    通过实例详细说明了linux 下Segmentation fault(core dumped)(段错误(核心已转储))的分析方法,段错误产生的必要条件,以及core dumped文件的存储,命名等。

    问题现象

    今天在研究linux kernel中typedef的用法时,写了一个程序test_typedef.c,内容如下:

    #include<stdio.h>
    
    typedef int size;
    typedef unsigned int word;
    typedef char line[81];
    typedef void (*printStr)(line text);
    typedef printStr * pprintStr;
    typedef char * pstr;
    
    void printText(line text){
        printf("%s\n", text);
    }
    
    void * pppPrintText(line text){
        printf("%s\n", text);
    }
    
    pprintStr pprintText(){
        //return &printText;
        printStr temp = printText;
        return (printStr *)temp;
    }
    /*void (*pprintText)(line text){
        printf("%s\n", text);
    }*/
    
    void main(){
        size i=10;
        word w = 20;
        line text;
        printf("%d, %d, %d\n",i, w, sizeof(text)/sizeof(char));
    
        printStr printFun = printText;
        pprintStr pprintFun = pprintText();
        printFun("test typedef");
        //((printStr)pprintFun)("test pointer typedef");
        (*pprintFun)("test pointer typedef");
    
        char string[4] = "abc";
        pstr p1 = string;
        const char *p2 = string;
        p1++;
        p2++;
        printf("%s, %s\n", p1, p2);
    }
    

    加上37行的代码(*pprintFun)(“test pointer typedef”);后,通过gcc –o typedef test_typdef.c命令编译成typedef可执行文件后执行,出现段错误:

    这里写图片描述

    之前也遇见过“段错误(核心已转储)”(Segmentation fault(core dumped)),但是没有进行分析,今天借着这个机会学习一下这类问题的分析方法。

    段错误的分析方法

    段错误一般借助于可调试(使用-g选项进行编译)的原程序和核心转储后的core file来进行分析,如针对我写的程序,其步骤为:

    • gcc –g –o typedef test_typedef.c (生成可调试的可执行程序)
    • ./typedef (产生段错误,生成core file)
    • gdb –c core_file typdef (使用core file调试产生段错误的可执行程序)
    • 在gdb调试环境中执行bt或where命令定位到问题行

    按如上步骤对typedef可执行程序的分析结果如下:

    这里写图片描述

    由上图可以看出,通过core file定位出来的问题代码行也是37行,说明分析结果的准确性。

    core file的产生

    core file文件是在程序异常退出时产生的,程序的异常退出往往是通过信号(signal)产生的,但并不是所有的信号都能够产生core file,在signal.h的头文件中定义了哪些signal可以产生core file,如下:

    这里写图片描述
    这里写图片描述

    上图中所有default action为coredump的中断信号都可以产生core file。
    除了中断信号必须能够产生coredump外,还必须进行如下设置:

    • ulimit –c unlimited (设置core file的大小,相当于使能core file的生成)
    • ulimit unlimited (设置file的大小)

    其他问题

    1. core file存放在哪个目录
    存放core file一般存放在进程的当前工作目录,一般就是当初发出命令启动该进程时所在的目录。但如果是通过脚本启动,则脚本可能会修改当前目录,这时进程真正的当前目录就会与当初执行脚本所在目录不同。这时可以查看"/proc/pid/cwd"符号链接的目标来确定进程真正的当前目录地址。

    2. core file的文件名
    一般core file的文件名即为core,可能通过

    echo "1" > /proc/sys/kernel/core_uses_pid
    

    将core file的文件名改为core.pid

    3. 如何修改core file的文件名格式和保存位置
    /proc/sys/kernel /core_pattern可以控制core文件保存位置和文件名格式。可通过以下命令修改此文件:

    echo  "/corefile/core-%e-%p-%t" >/proc/sys/kernel /core_pattern
    

    可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
    以下是参数列表:
    %p - insert pid into filename 添加pid
    %u - insert current uid into filename 添加当前uid
    %g - insert current gid into filename 添加当前gid
    %s - insert signal that caused the coredump into the filename 添加导致产生core的信号
    %t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
    %h - insert hostname where the coredump happened into filename 添加主机名
    %e - insert coredumping executable name into filename 添加命令名

    4. 如果你当初是以用户A运行了某个程序,但在ps里看到的这个程序的用户却是B的话,那么这些进程就是调用了seteuid了。为了能够让这些进程生成core dump,需要将/proc/sys/fs/suid_dumpable 文件的内容改为1(一般默认是0)

    参考技术文章

    1. http://www.cnblogs.com/yunlong3727/archive/2013/05/21/3090797.html
    展开全文
  • 双卡跑的一个程序,程序本身没有问题,在其他的单卡电脑上是可以正常训练的。在终端中跑,训练1-2个epoch后就会出现这种报错,没有具体的,如果在单卡上跑,程序跑着跑着电脑死机,直接卡死啥都动不了,查看了显存和...
  • 段错误 (核心已转储)

    2019-10-13 22:08:40
    段错误 (核心已转储) ./qr 1.jpg 段错误 (核心已转储) 第一次运行可以正常运行检测,第二次则出现该问题 源代码如下: #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp...
    ./qr 1.jpg
    712
     ./qr 1.jpg
    段错误 (核心已转储)
    ./qr 1.jpg
    段错误 (核心已转储)
    
    
    

    第一次运行可以正常运行检测,第二次则出现该问题
    源代码如下:

    #include "opencv2/highgui/highgui.hpp"
    #include "opencv2/imgproc/imgproc.hpp"
    #include "opencv2/imgproc/imgproc.hpp"
    #include <opencv2/imgproc/types_c.h>
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
     
    using namespace cv;
    using namespace std;
     
     
    Mat src; Mat src_gray;
     
     
    RNG rng(12345);
    //Scalar colorful = CV_RGB(rng.uniform(0,255),rng.uniform(0,255),rng.uniform(0,255));
     
     
    Point Center_cal(vector<vector<Point> > contours,int i)//找到所提取轮廓的中心点
       {
              int centerx=0,centery=0,n=contours[i].size();
              //在提取的小正方形的边界上每隔周长个像素提取一个点的坐标,求所提取四个点的平均坐标(即为小正方形的大致中心)
              centerx = (contours[i][n/4].x + contours[i][n*2/4].x + contours[i][3*n/4].x + contours[i][n-1].x)/4;
              centery = (contours[i][n/4].y + contours[i][n*2/4].y + contours[i][3*n/4].y + contours[i][n-1].y)/4;
              Point point1=Point(centerx,centery);
              return point1;
       }
     
     
     
     
     
     
    int main( int argc, char** argv[] )
    {
     
     
      src = imread( "1.jpg", 1 );
      Mat src_all=src.clone();
     
     
     
     
      cvtColor( src, src_gray, CV_BGR2GRAY );
    //  src_gray = Scalar::all(255) - src_gray;
      blur( src_gray, src_gray, Size(3,3) );
      equalizeHist( src_gray, src_gray );
      imshow("滤波后",src_gray);
     
     
      Scalar color = Scalar(1,1,255 );
      Mat threshold_output;
      vector<vector<Point> > contours,contours2;
      vector<Vec4i> hierarchy;
      Mat drawing = Mat::zeros( src.size(), CV_8UC3 );
      Mat drawing2 = Mat::zeros( src.size(), CV_8UC3 );
      threshold( src_gray, threshold_output, 112, 255, THRESH_BINARY );
      //Canny(src_gray,threshold_output,136,196,3);
       //imshow("预处理后:",threshold_output);
     
     
      findContours( threshold_output, contours, hierarchy,  CV_RETR_TREE, CHAIN_APPROX_NONE, Point(0, 0) );
      //CHAIN_APPROX_NONE全体,CV_CHAIN_APPROX_SIMPLE,,,RETR_TREE    RETR_EXTERNAL    RETR_LIST   RETR_CCOMP
     
     
        int c=0,ic=0,k=0,area=0;
    //
        //程序的核心筛选
        //程序的核心筛选
        int parentIdx=-1;
        for( int i = 0; i< contours.size(); i++ )
        {
            if (hierarchy[i][2] != -1 && ic==0)
            {
                parentIdx = i; 
                ic++;
            }
            else if (hierarchy[i][2] != -1)
            {
                ic++;
            }
            else if(hierarchy[i][2] == -1)
            {
                ic = 0;
                parentIdx = -1;
            }
     
     
            if ( ic >= 2)
            {
                contours2.push_back(contours[parentIdx]);
                drawContours( drawing, contours, parentIdx,  CV_RGB(rng.uniform(0,255),rng.uniform(0,255),rng.uniform(0,255)) , 1, 8);
                ic = 0;
                parentIdx = -1;
                area = contourArea(contours[i]);//得出一个二维码定位角的面积,以便计算其边长(area_side)(数据覆盖无所谓,三个定位角中任意一个数据都可以)
            }
            //cout<<"i= "<<i<<" hierarchy[i][2]= "<<hierarchy[i][2]<<" parentIdx= "<<parentIdx<<" ic= "<<ic<<endl;
     
     
        }
     
     
        for(int i=0; i<contours2.size(); i++)
            drawContours( drawing2, contours2, i,  CV_RGB(rng.uniform(100,255),rng.uniform(100,255),rng.uniform(100,255)) , -1, 4, hierarchy[k][2], 0, Point() );
     
     
        Point point[3];
        for(int i=0; i<contours2.size(); i++)
        {
            point[i] = Center_cal( contours2, i );
        }
    	
    	area = contourArea(contours2[1]);//为什么这一句和前面一句计算的面积不一样呢
        int area_side = cvRound (sqrt (double(area)));
        for(int i=0; i<contours2.size(); i++)
        {
            line(drawing2,point[i%contours2.size()],point[(i+1)%contours2.size()],color,area_side/2,8);
        }
     
     
        imshow( "提取后", drawing2 );
        printf("%d\n", contours.size());
        //imshow( "Contours", drawing );
     
     
    	//接下来要框出这整个二维码
    	Mat gray_all,threshold_output_all;
    	vector<vector<Point> > contours_all;
        vector<Vec4i> hierarchy_all;
    	cvtColor( drawing2, gray_all, CV_BGR2GRAY );
     
     
    	threshold( gray_all, threshold_output_all, 45, 255, THRESH_BINARY );
    	findContours( threshold_output_all, contours_all, hierarchy_all,  RETR_EXTERNAL, CHAIN_APPROX_NONE, Point(0, 0) );//RETR_EXTERNAL表示只寻找最外层轮廓
     
     
    	//求最小包围矩形,斜的也可以哦
    	 RotatedRect rectPoint = minAreaRect(contours_all[0]);
    	 Point2f fourPoint2f[4]; 
     
     
    	 //将rectPoint变量中存储的坐标值放到 fourPoint的数组中  
    	 rectPoint.points(fourPoint2f);
     
     
    	  for (int i = 0; i < 4; i++)  
            {  
                line(src_all, fourPoint2f[i%4], fourPoint2f[(i + 1)%4]  
                    , Scalar(20,21,237), 3);  
            }  
     
     
    	 imshow( "二维码", src_all );
     
     
        waitKey(0);
        return(0);
    }
    

    原因
    1.图片预处理(模糊+直方图均衡化)后,用查找轮廓不易查找出定位角;
    2.致使对contourArea(contours2[0])未定义,后面涉及到contourArea(contours2[1])的运算时会涉及数组越界,造成“段错误(核心已转储)。
    解决方法:
    将图片预处理部分注释掉

     // blur( src_gray, src_gray, Size(3,3) );
      //equalizeHist( src_gray, src_gray );
      //imshow("滤波后",src_gray);
    
    展开全文
  • 最近在ubuntu16.04上面使用ros打开小海龟界面节点程序的时候出现了段错误,核心已转储这个错误 ![图片说明](https://img-ask.csdn.net/upload/201810/25/1540434508_551078.png) 非常感谢大家的帮助,自己是...
  • transformers在cuda8下的 BertForMaskedLM.from_pretrained 执行时会报 “段错误 (核心已转储)” 的错误,应该是cuda版本的问题,使用cuda10后错误消失
  • 段错误 核心已转储 堆转储是诊断与内存相关的问题的重要工件,例如内存泄漏缓慢,垃圾回收问题和java.lang.OutOfMemoryError。它们也是优化内存消耗的重要工件。 有很棒的工具,例如Eclipse MAT和Heap Hero,可以...
  • Segmentation fault(核心已转储)

    千次阅读 2017-11-10 15:04:45
    “段错误(核心已转储)”(Segmentation fault(core dumped)) 段错误一般借助于可调试(使用-g选项进行编译)的原程序和核心转储后的core file来进行分析,其步骤为:gcc –g –o typedef test_typedef.c (生成可...
  • YOLOV3----训练已放弃(核心已转储)

    千次阅读 热门讨论 2019-03-25 20:29:40
    由于时间原因,简单写一下YOLOV3遇到的一个问题----训练已放弃(核心已转储) 这个问题很让人头疼,因为真的是多方面的原因,可能就是一个小的细节,导致了训练过程突然终止。由于这个开源代码很容易理解、编译,效果...
  • jerrylew@jerrylew-CW15:~/darknet$ ./darknet detector train ./cfg/voc.data cfg/tiny-yolo-voc.cfg tiny-yolo-voc layer filters size input output ...已放弃 (核心已转储) 这什么情况啊 求解
  • Linux“段错误,核心已转储

    千次阅读 2019-09-29 08:42:00
    最近一个代码编译之后,运行老是报“段错误,核心已转储”,用gdb的bt命令也无法定位到原因。最后发现是因为一个返回int类型的函数没有写return。windows下面没有return的会自己return,linux下编译警告没有return,...
  • <div><p>运行sudo ./yolov4 -s 后报如下错误 请问怎么解决 <p><strong>yolov4: /media/cendelian/新加卷/CV/Project/...已放弃 (核心已转储)**</p><p>该提问来源于开源项目:wang-xinyu/tensorrtx</p></div>
  • 最近自然语言处理可老师让我们用kenlm训练语料库,装了之后运行不了,不过终端也给出了解决问题的方法,最后一行(已放弃,核心已转储,的上面一行)告诉你说要 rerun with --discount_fallback 所以说,在执行命令 ...
  • 分析错误的原因可能是GPU显存不足的原因导致了 "已放弃(核心已转储)"出现,我们现在看看是否真的还有没有杀掉的GPU进程 执行 nvidia-smi: 果然发现有没有杀掉的进程 执行 kill -9 16017 : 果然发现有没有杀掉...
  • 段错误 核心已转储 堆转储是诊断与内存相关的问题(例如内存泄漏,垃圾回收问题和java.lang.OutOfMemoryError)的重要工件。 它们也是优化内存使用情况的重要工件。 在本文中,我们提供了几种不同的选项来从Android ...
  • 会报核心已转储的错误 解决方法: 出现以上问题一般是由于gpu内存不够,或者是由于gpu被占用了大部分,所以导致出现以上问题:我们可以在终端里面杀死其它占用gpu跑的程序或者是重启即可解决问题 我重启解决了以上...
  • 在做ORB_SLAM2的时候,编译已通过,运行时出错:段错误 (核心已转储),请问怎么解决? caomi@caomi-ubuntu:~/catkin_ws/src/ORB_SLAM2_modified$ rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1....
  • 两台不同机器,调用yolov3做检测,结果一个机器正常,一个机器出现" 段错误 (核心已转储)"。代码完全一致,环境基本相似吧。后来查到只要 import matplotlib.pyplot as plt 就会报错,然后把所有plt的直接注释了。...
  • 测试Caffe的时候, cd ~ && python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure" ... 出现了 段错误(核心 已转储) 错误。 修改方法...
  • 错误提示:段错误 (核心已转储) 问题描述: 在提示conda install error之后,任何包都无法进行install; 解决方案: 我们可以使用运行 conda clean -a 然后再次运行conda install – conda clean -a 的作用删除索引...
  • Python--Anaconda段错误 (核心已转储)

    千次阅读 2018-07-17 18:51:32
    更新Ubuntu系统后,Spyder启动失败: air@airfull:~$ spyder 段错误 (核心已转储) 解决办法: air@airfull:~$ conda install pyopengl
  • 段错误(核心已转储)——那些易被忽略的细节   段错误,就是一旦一个程序发生了越界访问,cpu 就会产生相应的保护,于是 segmentation fault 就出现了,通过上面的解释,段错误应该就是访问了不可访问的内存,这...
  • s段错误 (核心已转储)错误解决 下载cuda时,下载地址 wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run 时到99%报错 “剩余 2s s段错误 (核心...
  • 已放弃(核心已转储) 此时说明GPU的显存已满,一种解决办法是重启命令行或重启电脑,另一种方法是手动清理显存,步骤如下: 首先在命令行输入指令 nvidia-smi 查看显卡使用情况,可以发现最右下角名为python...
  • 在Linux服务器上训练模型时,每当训练数据时程序就会自动停掉,报段错误(核心已转储),经过搜索有人说是程序越界了,stack太小了,于是我用ulimit -a 查看了Linux中stack的大小,然后又使用ulimit -c 10240修改...
  • “18602 段错误 (核心已转储)” 说明一些库的版本不对。检查是不是开启了anaconda的环境。(查看:发现确实忘记source activate tensorflow1)
  • 试图远程打开工控机可视化界面显示核心已转储 主要是由于工控机上没有外接显示屏,导致不能显示。 解决方案: 如何查看同一个网段下的电脑,我的工控机和电脑是连接同一个路由器,这里我通过路由器查看。 1, 输入...
  • “段错误 (核心已转储) ”一种可能原因及其解决方法
  • PyTorch代码运行出现“非法指令(核心已转储)”错误 最近看篇论文下了作者提供的代码准备运行试试,结果一运行到某行就会报错:“非法指令(核心已转储)” 开始以为是调用的函数内部代码哪里写错了,经过各种调试...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 532
精华内容 212
关键字:

核心已转储