zoukankan      html  css  js  c++  java
  • linux下 gdb+coredump 调试偶发crash的程序

    1. 打开 core dump

    查看是否打开

    ulimit -c
    

     如果输出0, 说明没有打开。

    方法一:使用命令

    ulimit -c unlimited
    

     可以打开,但是只对当前终端有效,

    方法二: 配置 /etc/profile 文件

    sudo gedit /etc/profile
    

     在最后添加一行

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

     可以始终打开core dump , unlimited 可以改为具体的数字,比方说 1024 来限制 core 文件的大小。

    然后在 bashrc 文件里面 source /etc/profile 就可以使每个终端运行的程序 启动 core dump 了.

    2. 设置core文件的路径和名字

    生成的core file在哪里?
    core file生成的地方是在/proc/sys/kernel/core_pattern文件定义的。
    改动到生成到自己定义的目录的方法是:

    echo "pattern" > /proc/sys/kernel/core_pattern

    并且只有超级用户可以修改这两个文件。
    "pattern"类似我们C语言打印字符串的格式,相关标识如下:
    %%: 相当于%
    %p: 相当于
    %u: 相当于
    %g: 相当于
    %s: 相当于导致dump的信号的数字
    %t: 相当于dump的时间
    %h: 相当于hostname
    %e: 相当于执行文件的名称
    这时用如下命令设置生成的core file到系统/tmp目录下,并记录pid以及执行文件名
    echo "/tmp/core-%e-%p" > proc/sys/kernel/core_pattern

    gdb  coredump应用程序  coredump文件

    bt / where 得到堆栈信息

  • 相关阅读:
    使用Python操作MySQL数据库
    SQL server数据库语句
    SQL server数据库
    实施工程师
    Vue外卖项目
    每日思考记录(12)
    Vue核心知识点
    jQuery快速入门
    js
    css2
  • 原文地址:https://www.cnblogs.com/lvchaoshun/p/10053603.html
Copyright © 2011-2022 走看看