美文网首页
Mac coredump文件

Mac coredump文件

作者: 苍眸之宝宝 | 来源:发表于2022-03-03 11:18 被阅读0次

    简介:

    coredump是指当程序出错而异常中断时,OS会把程序工作的当前状态存储成一个coredunmp文件。

    一般情况下,coredunmp文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等;通过工具分析这个文件,我们可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题所在并进行及时解决。

    coredump的生成:

    1.查询coredump是否开启生成状态
    命令:
    ulimit -c
    0表示不会产生coredump文件

    2.设置coredump开启生成状态
    命令:
    sudo sysctl kern.coredump=1
    按下Enter键后,需要输入开机密码,直接输入,完成后Enter结束

    3.设置文件大小
    命令:
    ulimit -c unlimited
    ulimit -c size
    ulimit表示coredump文件大小无限制;size(单位是blocks,一般1block=512bytes)表示最大文件上限,注意size太小会无法生成该文件

    4.设置coredump的路径及其权限
    命令:
    sudo mkdir /cores
    sudo chown root:admin /cores
    sudo chmod 1775 /cores
    sudo chmod o+w /cores

    5.添加可以崩溃的代码文件

    # include <cstdio>
    # include <cstdlib>
    
    int main(void) {
        int * pI = NULL;
        *pI = 0;
        return 0;
    }
    

    6.编译文件:
    命令:
    g++ -g fileName -o targetFileName
    例如:g++ -g test_coredump.cpp -o test
    test_coredump.cpp为代码文件,test为编译后的文件;注意:需要cd到需要编译文件的文件夹下,否则提示找不到要编译的文件

    7.查看编译后当前文件夹文件:
    命令:
    ls -l
    输出:

    total 48
    -rwxr-xr-x  1 anniekidsgood  staff  16800  3  3 10:46 test
    drwxr-xr-x  3 anniekidsgood  staff     96  3  3 10:46 test.dSYM
    -rw-r--r--@ 1 anniekidsgood  staff    107  3  2 17:58 test_coredump.cpp
    

    其中,test为可执行文件

    8.执行可执行文件:
    命令:
    ./fileName
    例如:./test
    输出:

    segmentation fault (core dumped)  ./test
    

    查看/cores文件夹,多出一个文件core.12895

    查看命令:
    ls -lh /cores
    输出:

    total 7304904
    -r--------  1 anniekidsgood  admin   3.5G  3  3 10:51 core.12895
    

    9.调试core文件
    命令:
    lldb -c /cores/coreFileName
    例如:lldb -c /cores/core.12895
    输出:

    (lldb) target create --core "/cores/core.12895"
    Core file '/cores/core.12895' (x86_64) was loaded.
    

    命令:
    bt
    输出堆栈信息:

    * thread #1, stop reason = signal SIGSTOP
      * frame #0: 0x000000010c993fa9 test`main at test_coredump.cpp:6:9
        frame #1: 0x00000001154624fe dyld`start + 462
    

    参考链接:
    coredump详解

    相关文章

      网友评论

          本文标题:Mac coredump文件

          本文链接:https://www.haomeiwen.com/subject/ajuyrrtx.html