zoukankan      html  css  js  c++  java
  • 3. Coredump故障分析

    3. Coredump故障分析

    一、定义:Core Dump又叫核心转存。当程序在运行过程中发生异常,这时Linux系统可以把程序出错时的内存内容存储在一个core文件中,这种过程叫Core Dump。

    二、Segment fault:这是Core Dump主要解决的错误。Linux应用程序在运行过程中,经常会遇到Segment fault(段错误)这样的错误。产生这样错误的原因通常有:

    1. 数组访问越界。
    2. 访问空指针。
    3. 栈溢出。
    4. 修改只读内存。

    三、Core Dump使能

        在Linux系统中,默认是关闭core dump功能的,但是可以通过ulimit命令打开/关闭core dump功能:

        打开:ulimit –c unlimited

        关闭:ulimit –c 0

        四、Core 文件分析。

        发生core dump之后,可以使用gdb进行查看core文件的内容,以定位程序出错的位置。

        用法:gdb 程序名 core文件名

        例:gdb ./test core.core

        五、使用gdb+core file找出程序中的错误。

    接下来是两个实例:

    1. 访问空指针:

    #include <stdio.h>

    #include <stdlib.h>

    void main()

    {

    int *ptr = NULL;

    *ptr = 0;

    }

    但是此时我们用gdb找不到错误的信息,这是因为我们刚才在编译的时候没有加-g,生成调试信息。接下来加上调试信息。下面的调试看到,他直接定位错误的地方:

    2.访问只读内存。

    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

    void main()

    {

        char ptr[] = "123456";

    ptr[0] = '7';

    }

  • 相关阅读:
    css实现京东顶部导航条
    css盒布局-省份选择盘的实现
    css字体的属性
    css行高
    CSS定位(position)
    CSS-clear属性的作用
    2.b统计字符串长度
    rectangle类。java
    mysql 版本问题之sql-mode 导致 sql 语句报错
    根据一个表中同一字段的不同值进行统计!!!
  • 原文地址:https://www.cnblogs.com/FORFISH/p/5188602.html
Copyright © 2011-2022 走看看