zoukankan      html  css  js  c++  java
  • Core Dump解析(1)

    http://haobing2005.blog.163.com/blog/static/466678620097180467346/

    今天调试一个程序, 用到了core dump, 但是不知道是做什么用的,查了一下,明白了些, 记于此.

    什么是Core Dump?

    Core的意思是内存, Dump的意思是扔出来, 堆出来.

    开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考.

    core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump.

    如何使用core文件?

    gdb -c core文件路径 [应用程序的路径]

    进去后输入where回车, 就可以显示程序在哪一行当掉的, 在哪个函数中.

    为什么没有core文件生成呢?

    有时候程序down了, 但是core文件却没有生成. core文件的生成跟你当前系统的环境设置有关系, 可以用下面的语句设置一下, 然后再运行程序便成生成core文件.

    ulimit -c unlimited

    core文件生成的位置一般于运行程序的路径相同, 文件名一般为core.进程号

    4. 用gdb查看core文件:

    下面我们可以在发生运行时信号引起的错误时发生core dump了.

    发生core dump之后, 用gdb进行查看core文件的内容, 以定位文件中引发core dump的行.

    gdb [exec file] [core file]

    如:

    gdb ./test test.core

    在进入gdb后, 用bt命令查看backtrace以检查发生程序运行到哪里, 来定位core dump的文件->行.

  • 相关阅读:
    python之字典操作
    python之元组操作
    初始超算
    后缀自动机
    博弈
    曼哈顿最小生成树
    莫队算法
    主席树
    [HNOI2014]世界树
    [SDOI2011]消耗战
  • 原文地址:https://www.cnblogs.com/balaamwe/p/2296116.html
Copyright © 2011-2022 走看看