• linux下生成core dump文件方法及设置


    ~$ ulimit -a    //查看core dump配置情况
        core file size          (blocks, -c) 0       //这里是显示生成core dump文件最大大小,如果这里是0,无法生成core dump文件
        data seg size           (kbytes, -d) unlimited
        scheduling priority             (-e) 20
        file size               (blocks, -f) unlimited
        pending signals                 (-i) 16382
        max locked memory       (kbytes, -l) 64
        max memory size         (kbytes, -m) unlimited
        open files                      (-n) 1024
        pipe size            (512 bytes, -p) 8
        POSIX message queues     (bytes, -q) 819200
        real-time priority              (-r) 0
        stack size              (kbytes, -s) 8192
        cpu time               (seconds, -t) unlimited
        max user processes              (-u) unlimited
        virtual memory          (kbytes, -v) unlimited
        file locks                      (-x) unlimited

    总结一下,需要定位进程挂在哪一行我们只需要4个操作,
    ulimit -c unlimited    //打开生成core dump文件大小限制,unlimited表示无限制。
    echo "/tmp/core-%e-%p" > /proc/sys/kernel/core_pattern   //配置core dump文件存储路径,把/tmp/core-%e-%p设置为core dump文件的完全存储路径
    gcc -o main -g a.c          //编译源程序的时候要带 -g参数,-g参数表示生成的程序带调试信息
    gdb main /tmp/core-main-10815            //使用gdb查看程序的core dump文件。
    就可以啦
     
    一、只给当前用户打开生成 core dump文件的限制
     
    最简单的方法是用户在自己的~/.bash_profile中加入
    ulimit -S -c unlimited > /dev/null 2>&1

    这样设置后允许当前用户生成没有大小限制的core dump文件。
     
    二、两种系统级修改生成core dump的方法

    1、第一种方法是修改/etc/profile,把ulimit那一行改为 

    ulimit -S -c unlimited > /dev/null 2>&1 

    这样设置后系统允许所有用户生成没有大小限制的core dump文件。这样做的优点是不需要重起系统,缺点是无法控制只让某些用户生成core dump文件。

    2、第二种方法是修改/etc/security/limits.conf文件。很多系统上限都可以通过修改这个文件改变,如最大子进程个数,最大打开文件数等等。
    这个文件有详细的注释,对如何修改这个文件做了说明。如果想对所有用户打开core dump,可以加入一行 

    * soft core 0 

    如果只想对某些用户或用户组打开core dump,可以加入 

    user soft core 0



    @group soft core 0 

    注意如果通过修改/etc/security/limits.conf文件打开core dump,还需要注释掉/etc/profile中的ulmit那一行 

    #ulimit -S -c 0 > /dev/null 2>&1 

    这样修改的优点是可以针对特定用户或特定组打开core dump文件,缺点是需要重起系统。

    最后说一下生成core dump文件的位置,默认位置与可执行程序在同一目录下,文件名是core.***,其中***是一个数字。core dump文件名的模式保存在/proc/sys/kernel/core_pattern中,缺省值是core。通过以下命令可以更改core dump文件的位置(如希望生成到/tmp/cores目录下) 

    echo "/tmp/cores/core" > /proc/sys/kernel/core_pattern  
     
     
  • 相关阅读:
    [Alpha]Scrum Meeting#5
    [Alpha]Scrum Meeting#6
    [Alpha]Scrum Meeting#4
    [Alpha]Scrum Meeting#3
    【Beta阶段】第三次Scrum Meeting
    [技术博客]基于动态继承类、WebDriver的浏览器兼容性测试框架搭建
    【Beta阶段】第二次Scrum Meeting
    【Beta阶段】第一次Scrum Meeting
    [技术博客] 较科学的排名算法介绍与实现
    [技术博客]数据库的评测与选择
  • 原文地址:https://www.cnblogs.com/lisuyun/p/7354718.html
Copyright © 2020-2023  润新知