zoukankan      html  css  js  c++  java
  • 无法产生coredump的问题

    我写了一个必然会崩溃的程序,名字为 test
    #include "stdlib.h"
    #include "unistd.h"

    int main()
    {

            char *pTest = NULL;
            memcpy(pTest , "123", 111); 
            return 0;
    }


    编译后,直接执行,会在当前目录产生coredump

    然后我又写了一个shell,名字为 shelltest.sh :
    #!/bin/bash

    ulimit -c unlimited
    echo $(date) 'aaaa' >> /root/oooo.log
    echo $(ulimit -a)    >> /root/oooo.log
    sleep 3
    ./test


    并且在/etc/inittab中加入:(shelltest.sh , test 都放在/root)
    asd:2345:respawn:/root/shelltest.sh

    执行init q.这时脚本开始循环跑了,并且记了日志,程序也是在循环地崩溃。
    在日志中打出来的ulimit -a如下:
    core file size (blocks, -c) unlimited 
    data seg size (kbytes, -d) unlimited 
    scheduling priority (-e) 0 
    file size (blocks, -f) unlimited 
    pending signals (-i) 40960 
    max locked memory (kbytes, -l) 32 
    max memory size (kbytes, -m) unlimited 
    open files (-n) 1024 pipe size (512 bytes, -p) 8 
    POSIX message queues (bytes, -q) 819200 r
    eal-time priority (-r) 0 
    stack size (kbytes, -s) 10240 
    cpu time (seconds, -t) unlimited 
    max user processes (-u) 40960 
    virtual memory (kbytes, -v) unlimited 
    file locks (-x) unlimited

    跟我在命令行中打出来的一致。似乎没什么不妥的地方。

    但是在/root目录下没有产生dump文件。
    问题用一句话描述就是:通过shell执行的程序崩溃了,为什么不产生coredump呢?

    分析:

    我上面的方法,其实也是可以产生coredump的,只是由于目录未设置,产生路径为 /proc/[pid]/cwdcurrent working directory)对应的目录,如图:

    图中的cwd “/”,那么coredump需要到”/”下找。

    同时要满足产生core的条件:

    1.    core file size

    2.    目录写权限

     

    在下列条件下不产生core文件:
    ( a )进程是设置-用户-ID,而且当前用户并非程序文件的所有者;
    ( b )进程是设置-组-ID,而且当前用户并非该程序文件的组所有者;
    ( c )用户没有写当前工作目录的许可权;
    ( d )文件太大。core文件的许可权(假定该文件在此之前并不存在)通常是用户读/写,组读和其他读。

     


    并且在sshd中输入的ulimit -c unlimited ,在由init启的进程中并不生效,需要设置,可以在shell中设置

  • 相关阅读:
    一道《编程之美》第一章的无解题引发的“血案”
    MapReduce实例2(自定义compare、partition)& shuffle机制
    MapReduce实例&YARN框架
    HDFS下载数据机制的底层分析
    在windows下的hdfs客户端编写
    C语言-第2次作业得分
    第2次作业得分-东师软工
    第1次作业得分-东师软工
    第3次作业-四则运算(结对作业)
    第2次作业-效能分析
  • 原文地址:https://www.cnblogs.com/solohac/p/4154196.html
Copyright © 2011-2022 走看看