zoukankan      html  css  js  c++  java
  • 记录linux 生成crash dump文件步骤

    执行文件编译时加入-g 命令

    例如 g++ -g test.cpp

    查看当前系统限制情况

    ulimit -a

    设置crash dump 文件大小

    ulimit -c unlimited 
    unlimited表示无大小限制,也可以指定具体的大小 
    ulimit -c 1000 
    表示文件大小限制为1000Kb 
    若要全局生效需要在/etc/profile中加入上面的命令ulimit -c 1000,然后source /etc/profile使之生效

    配置dump文件生成路径

    /proc/sys/kernel/core_uses_pid 
    文件内容为1表示dump文件以pid为扩展名 
    /proc/sys/kernel/core_pattern 
    core_pattern接受的是core文件名称的pattern,它包含任何字符串,并且用%作为转移符号生成一些标示符,为core文件名称加入特殊含义。已定义的标示符有如下这些: 
    %%:相当于% 
    %p:相当于pid 
    %u:相当于uid 
    %g:相当于gid 
    %s:相当于导致dump的信号的数字 
    %t:相当于dump的时间 
    %e:相当于执行文件的名称 
    %h:相当于hostname 
    除以上这些标志位外,还规定: 
    1、末尾的单个%可以直接去除; 
    2、%加上除上述以外的任何字符,%和该字符都会被去除; 
    3、所有其他字符都作为一般字符加入名称中; 
    4、core文件的名称最大值为64个字节(包括’’); 
    5、core_pattern中默认的pattern为core; 
    6、为了保持兼容性,通过设置core_uses_pid,可以在core文件的末尾加上%p; 
    7、pattern中可以包含路径信息。 
    echo “/corefile/core-%e-%p-%t” > /proc/sys/kernel/core_pattern 
    将会控制所产生的core文件会存放到/corefile目录下(/corefile目录需要提前创建),产生的文件名为core-执行文件名-pid-时间戳

    在发生SIGSEGV时系统会自动在程序目录下生成core.xxxx文件,此即dump文件; 
    注意,此时程序不能再注册SIGSEGV的处理函数! 
    使用gdb分析dump文件: 
    1.执行gdb:gdb –core=core.xxxx 
    2.在gdb中加载符号文件:file ./a.out 
    上两步也可以统一成:gdb a.out core.xxxx 
    3.定位到出错代码:where或backtrace,将显示#x这样的堆栈信息 
    4.查看更详细的函数调用信息:frame x,x为#后的数字

  • 相关阅读:
    QT学习笔记
    局域网摄像头安装与调试
    从0开始搭建视觉检测智能车
    树莓派安装anaconda
    手把手教你搭建视觉检测智能车
    树莓派与Arduino串口通信实验
    树莓派设置关机重启键
    树莓派can通信
    树莓派GPIO使用笔记
    MySQL练习题
  • 原文地址:https://www.cnblogs.com/Ph-one/p/10871467.html
Copyright © 2011-2022 走看看