zoukankan      html  css  js  c++  java
  • 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  
     
     
  • 相关阅读:
    PAT 解题报告 1009. Product of Polynomials (25)
    PAT 解题报告 1007. Maximum Subsequence Sum (25)
    PAT 解题报告 1003. Emergency (25)
    PAT 解题报告 1004. Counting Leaves (30)
    【转】DataSource高级应用
    tomcat下jndi配置
    java中DriverManager跟DataSource获取getConnection有什么不同?
    理解JDBC和JNDI
    JDBC
    Dive into python 实例学python (2) —— 自省,apihelper
  • 原文地址:https://www.cnblogs.com/lisuyun/p/7354718.html
Copyright © 2011-2022 走看看