zoukankan      html  css  js  c++  java
  • Linux系统编程13_CoreDump

    CORE DUMP 核心转储
    所谓核心转储是指当进程因为异常而终止时,把进程中的内存数据保存一份到硬盘上的过程。

    进程异常终止通常是因为有bug,比如野指针,除0等导致段错误,
    我们可以利用Core Dump检查文件出现异常的原因,这个过程称为事后调试。

    使用ulimit命令设置core文件的大小
    ulimit -c unlimited //设置corefile的大小为不限制大小;
    ulimit -c 1024//因为core file size的大小默认为0,通过ulimit命令设置为1024K

    定位segment fault错误思路:一般是使用gdb进行问题定位,gdb需要有core-dump文件。

    编译可执行程序时,需要加上-g选项,便于后期问题定位;

    修改corefile的输出路径,新建一个/corefile文件夹,然后输入chmod 777开设权限;
    通过echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern,来修改输出文件名格式即可;
    如果程序在运行过程中奔溃,则在/corefile目录下会自动生成对应的core-dump文件;

    gdb调试:gdb ./xxxx --core=/corefile/xxxxxxx;
    进入gdb之后,输入bt命令查看出错时的函数调用栈,会精确到具体的代码行;
    然后输入bt full, 就可以查看到详细的调用栈,这样就可以根据显示的信息,找到崩溃的地方。

    %p - 进程的pid
    %u - 当前的uid
    %g - 当前的gid
    %s - 产生coredump的信号
    %t - 产生coredump的时间戳
    %h - 主机名
    %e - 可执行文件的名称

    gdb programname
    (gdb)core core_file

    知行合一
  • 相关阅读:
    DNS部署与安全
    DHCP部署与安全
    jenkins漏洞复现
    Apache Axis2 漏洞复现
    制作war包
    JBOOS 漏洞复现
    Tomcat漏洞复现
    编写登陆接口(2)
    学习使用新工具Pycharm
    while练习99乘法表
  • 原文地址:https://www.cnblogs.com/grooovvve/p/14651083.html
Copyright © 2011-2022 走看看