什么是core dump linux下用core和gdb查询出现"段错误"的地方

什么是core dump   linux下用core和gdb查询出现"段错误"的地方

http://blog.chinaunix.net/uid-26833883-id-3193279.html

有些时候我们在一段C代码的时候,由于对一个非法内存进行了操作,在程序运行的过程中,出现了"段错误"。

呵呵,这种问题我想很多人会经常遇到。遇到这种问题是非常无语的,只是提示了"段错误",接着什么都没 有,如果我们一味的去看代码找太疼苦了,因为我们都相信自己写的代码没问题,现实就是现实。下面介绍一种方法,可以有效的定位出现"段错误的地方"。

当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。

什么是core dump?

core的意思是内存,dump的意思是扔出来,堆出来。
为什么没有core文件生成呢?

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

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

什么是core文件

当一个程序奔溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是一个内存映像(同时加上调试信息),主要用来调试的。

下面我们来看看,怎样利用core文件来定位我们出现"段错误"的地方.

#不限制core dump文件大小
ulimit -c unlimited

#最大的 core 文件的大小, 以 blocks 为单位。
ulimit – c unlimited; 对生成的 core 文件的大小不进行限制。

程序运行结果:

从上面我们可以看出,第一次运行程序出现"段错误"并没有出现core文件,一般linux操作系统默认core文件的大小都是0,需要手动设置一下。

调试core文件

core文件是个二进制文件,需要用相应的工具来分析程序崩溃时的内存映像。

linux下可以用gdb来调试core文件 。

从上面我们可以清楚的看到我们的程序是在那个地方出现了错误。

呵呵,有了这种方法,我想以后我们可以不再那么惧怕"段错误"了。

时间: 2024-10-09 00:15:44

什么是core dump linux下用core和gdb查询出现"段错误"的地方的相关文章

linux下tomcat服务的启动、关闭与错误跟踪

linux下tomcat服务的启动.关闭与错误跟踪,远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务: 1).启动tomcat服务 进入tomcat主目录下的bin目录,然后执行如下命令: ./startup.sh 2).关闭tomcat服务 进入tomcat主目录下的bin目录,然后执行如下命令: ./shutdown.sh 通过1)启动的tomcat有个弊端,当客户端连接断开的时候,tomcat服务也就立即关闭了,通过以下命令可以作为linux服务一直运行 3).作为服务启

让你提前认识软件开发(51):VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改

第3部分 软件研发工作总结 VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改 [文章摘要] Pclint是一种C/C++软件代码静态分析工具.它是一种更加严格的编译器,能够发现普通编译器所不能发现的代码中的很多问题,因此被广泛应用于软件开发项目中. 本文介绍了如何在VC++集成开发环境中配置Linux下的Pclint工程,给出了C语言中pclint规则A检查的常见错误,并描述了对应的修改办法. [关键词] VC++  Pclint  配置  操作  修改 1. 前言 P

Linux下MySql出现#1036 – Table ‘ ‘ is read only 错误解决方法

这两天在进行网站搬家,这次网站搬家采用直接打包mysql数据库和网页文件的形式进行迁移,上传好mysql data目录里面的网站数据库至VPS上mysql存放数据库的目录里面,解压就行.我的VPS存放数据库的路径是 /usr/local/mysql/var. 上传好网站数据,解压,配置好数据库链接参数就行,网站就能正常连接上了,我本以为这已 经是顺利迁移完成了,但后来操作的时候,发现只能读取数据库的内容,不能更改写入任何信息,提示#1036 – Table ‘* ‘ is read only (

linux下命令行连接FTP是遇到的错误(425 Failed to establish connection)

linux下命令行连接FTP是遇到的错误(425 Failed to establish connection) 首先FTP的运行模式有主动模式和被动模式两种 然后笔者在工作中搭建了ftp,但是没有开启他的被动模式. 然后server端的防火墙开放了21端口. 因此客户端能连上server,但是输入命令会提示.(首先要数据passive off命令关闭客户端以被动模式连接server端) 原因是ftp在主动模式下是通过21端口进行登陆的,但是后续是通过20端口与客户端进行数据交换. 因此笔者在这

linux下生成core dump文件方法及设置

core dump的概念: A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally (crashed). In practice, other key pieces of program state are usually dumped at the s

linux下生成core dump文件方法及设置【转】

转自:http://blog.csdn.net/mrjy1475726263/article/details/44116289 源自:http://andyniu.iteye.com/blog/1965571 core dump的概念: A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has te

linux下代码生成core文件

我们都知道在linux环境下,通过ulimit -c size 命令能方便的打开或关闭coredump功能,从而生成core文件,便于调试.但是对于如何用代码控制生成core文件,可能很多人就不知道了.我们一起来看下,其实也很简单. 首先需要了解两个函数: int getrlimit(int resource, struct rlimit *rlim); int setrlimit(int resource, const struct rlimit *rlim); 这两个函数可以对系统的一些资源

Linux下设置Core文件生成路径及文件名

修改core dump文件路径: 方法1:临时修改: 修改/proc/sys/kernel/core_pattern文件/proc目录本身动态加载每次系统重启都会重新加载因此种方法只能作临时修改/proc/sys/kernel/core_pattern例:echo '/var/log/%e.core.%p' > /proc/sys/kernel/core_pattern 方法2:永久修改: 使用sysctl -w name=value命令例:/sbin/sysctl -w kernel.core

一次有趣的Linux下.Net Core与C语言的合作开发体验:生成Linux标准的用户密码串

最近在项目进程中遇上了Linux用户验证的问题,想着怎么样通过Linux本地用户进行安全校验,于是去查了些资料. Linux的密码存储 查阅资料后发现早期的Linux存储在/etc/password文件中,因为/etc/password权限控制较弱,现在已经不使用了,所以我们这里就不讨论这个文件了,较新的Linux发行版,密码都是存储在/etc/shadow文件中,因为/etc/shadow是管理员权限访问,安全性高出许多,我们可以使用命令来查看文件: $ sudo cat /etc/shado