zoukankan      html  css  js  c++  java
  • 什么是 core dump ? 以及如何使用gdb对 core dumped 进行调试

    什么是core dump?(down = 当)

      core的意思是:内存,dump的意思是:扔出来、堆出来

      开发和使用linux程序时,有时程序莫名其妙的down掉了,却没有任何的提示(有时候会提示core dumped)。

      这时候可以查看一下有没有形如:core 的文件生成,这个文件便是操作系统把程序down掉时的内存的内容扔出来生成的,它可以做为调试程序的参考。

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

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

      有时候程序down掉了,但是core文件却没有生成。

      首先,就是要知道错误发生的地方。而Linux系统可以产生core文件,配合gdb就可以解决这个问题。

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

    第一步:让系统在信号中断造成的错误时产生core文件

      ulimit -c unlimited  // 设置core大小为无限

      ulimit unlimited      //设置文件大小为无限

    第二步:编译原来的程序:

      gcc -o xxx xxx.c -g

      (-g选项的作用是在可执行文件中加入源码信息,比如可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件中,而是在调试时必须保证gdb能找到源文件。)

    第三步:运行编译后的的程序:

      ./xxx(或者 xxx)

      运行后,然后 ls 发现多出来了core文件。

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

    第四步:用gdb查看core文件:

      若没有安装gdb,则需要先安装它,安装gdb参考网址:http://www.cnblogs.com/chenmingjun/p/8280889.html 

      安装完成后使用如下命令:

      gdb xxx core

    第五步:输入bt或者where,就会出现错误的位置,就可以显示程序在哪一行dowm掉的,在哪个函数中down掉的。如下图:

      具体错误可以从#0到#6来找。

      以上就是 core dumped调试的方法。

  • 相关阅读:
    PHP后门新玩法:一款猥琐的PHP后门分析
    中国菜刀批量导出数据
    渗透测试:反弹与转发小结
    怎样用Java自制优秀的图片验证码?这样!
    6条 Tips 为你照亮 GitHub 寻宝之路
    如何搭建一个“不可告人的”私人专属网盘?教程拿去
    6个炫酷又好用的 Python 工具,个个都很奔放呀
    20个Java练手项目,献给嗜学如狂的人
    如何自己动手写一个搜索引擎?我是一份害羞的教程🙈
    GitHub上个最有意思的项目合集(技术清单系列)
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/8280447.html
Copyright © 2011-2022 走看看