• 一文入门Linux下gdb调试(二)


    作者:良知犹存

    转载授权以及围观:欢迎添加微信号:Conscience_Remains

    总述

        今天我们介绍一下core dump文件,Core dump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里。

      该文件也是二进制文件,可以使用gdb、elfdump、objdump或者windows下的windebug、solaris下的mdb进行打开分析里面的具体内容。

        基于core文件的快照功能,我们就可以专门调试分析程序崩溃原因了,gdb同时调试一个运行程序和core文件,然后进行gdb调试的步骤,然后查看代码崩溃瞬间系统信息。

    使用如下:

    gdb  ./abort  ./core    /*  使用gdb调试*/

    三、生成core文件配置

    1.代码崩溃的条件有很多种,我们可以通过 kill -l 指令来查看奔溃的信号

    kill -l

    使用内存转储文件

    ulimit

    虽然我们知道进程在coredump的时候会产生core文件,但是有时候却发现进程虽然崩溃了,但是我们却找不到core文件。

    这是因为系统默认情况下内存转储文件 的大小设置是零,我们需要重新配置一下。ulimit  -c 可以设置core文件的大小,如果这个值为0.则不会产生core文件,这个值太小,则core文件也不会产生,因为core文件一般都比较大。

    2. 其中使用ulimit -c 可以查看你的系统对资源的限制情况

    ulimit -c

    发现设置为0

    3.我们可以使用ulimit  -c unlimited来设置无限大,则任意情况下都会产生core文件

    /*用来设置运行你的系统在应用程序崩溃之时可以生产core dump文件*/ulimit  -c unlimited

    4.执行 ./编译好的执行文件,代码崩溃产生内存转储的core dump文件,ls 可看到一个名为core且以进程号为后缀的文件

    5.调试coredump文件

     gdb ./statck  ./core

    调试方法与gdb调试正常程序一样,详情参照上一篇一文入门Linux下gdb调试(一)

     这就是我分享的gdb core dump 生成及调试方法,如果大家有什么更好的思路,欢迎分享交流哈。

    更多分享,扫码关注我

  • 相关阅读:
    VBA宏 合并EXCEL
    Opensource开源精神
    Redisd VS Memcached
    google-analytics.com
    Sybase PowerDesign 导入数据库结构formSqlserver
    Session Sticky About Nginx
    网站应用程式架构
    MapReduce形象总结
    Ubuntu升级内核
    ASP.NET5 MVC6入门教学之一(自己动手)
  • 原文地址:https://www.cnblogs.com/conscience-remain/p/13180276.html
Copyright © 2020-2023  润新知