Linux下的C程序常常会因为内存访问错误等原因造成segment fault(段错误),此时如果系统core dump功能是打开的,那么将会有内存映像转储到硬盘上来,之后可以用gdb对core文件进行分析,还原系统发生段错误时刻的堆栈情况。这对于我们发现程序bug很有帮助。
使用ulimit -a可以查看系统core文件的大小限制;使用ulimit -c [kbytes]可以设置系统允许生成的core文件大小,例如
ulimit -c 0 不产生core文件
ulimit -c 100 设置core文件最大为100k
ulimit -c unlimited 不限制core文件大小
先看一段会造成段错误的程序:
#include <stdio.h> int main() { char *ptr="linuxers.cn"; *ptr=0; }
编译运行后结果如下:
[leconte@localhost test]$ gcc -g -o test a.c [leconte@localhost test]$ ./test 段错误
此时并没有产生core文件,接下来使用ulimit -c设置core文件大小为无限制,再执行./test程序,结果如下:
[leconte@localhost ~]$ ulimit -a core file size (blocks, -c) 0 ......... [leconte@localhost test]$ ulimit -c unlimited [leconte@localhost test]$ ulimit -a core file size (blocks, -c) unlimited .............. [leconte@localhost test]$ ./test 段错误 (core dumped) [leconte@localhost test]$ ls -al core.* -rw------- 1 leconte leconte 139264 01-06 22:31 core.2065
可见core文件已经生成,接下来可以用gdb分析,查看堆栈情况:
[leconte@localhost test]$ gdb ./test core.2065 GNU gdb Fedora (6.8-27.el5) Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"... warning: exec file is newer than core file. warning: Can't read pathname for load map: Input/output error. Reading symbols from /lib/libc.so.6...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /lib/ld-linux.so.2...done. Loaded symbols for /lib/ld-linux.so.2 Core was generated by `./test'. Program terminated with signal 11, Segmentation fault. [New process 2065] #0 0x0804836f in main () at a.c:6 6 *ptr=0;
从上述输出可以清楚的看到,段错误出现在a.c的第6行,问题已经清晰地定位到了。
很多系统默认的core文件大小都是0,我们可以通过在shell的启动脚本/etc/bashrc或者~/.bashrc等地方来加入 ulimit -c 命令来指定core文件大小,从而确保core文件能够生成。
除此之外,还可以在/proc/sys/kernel/core_pattern里设置core文件的文件名模板,详情请看core的官方man手册。
相关推荐
图形输出在嵌入式开发中,多数是向FrameBuffer中写数据,然后会显示在LCD中,在Linux下做图形开发的时候,需要模拟各种环境,比如16位色的环境,32位色的环境等,这个时候需要在Linux中做一个配置的修改: ...
1. **启动检查**: 应用启动时,或者在特定条件下(如首次打开应用、网络可用等),检查更新。 2. **版本对比**: 调用服务器提供的API或文件,获取远程的`versionCode`和`versionName`,与本地应用的版本进行对比。 ...
- **信号接口电路分析**: GM2121作为信号接口的核心,负责A/D转换和像素时钟产生等功能。 - **关键部件检测**: 重点检查A/D转换器、LCD控制器、PLL等关键部件的工作状态。 - **故障诊断**: 根据电路原理和实际故障...
在文中提到作者从2003年开始的职业生涯,在这段时间内经历了多次转型。这表明在IT行业中,持续学习和适应新技术是非常重要的。随着技术的发展,IT专业人士必须不断更新自己的技能集以保持竞争力。例如,从传统的软件...
标题中的“论坛转帖工具.rar”表明这是一个用于在论坛之间转移帖子的软件工具,通常用于帮助用户方便地将一个论坛的帖子内容复制到另一个论坛,可能是为了分享信息、讨论或保存重要的帖子。这类工具可能包括自动抓取...
"linux文件系统制作流程"可能会提供Linux下制作文件系统的通用方法,虽然TrueFFS是为VxWorks设计,但原理相似。 5. **TrueFFS编程指南**:“Tornado之TrueFFS编程者指南”系列文件可能包含TrueFFS的详细使用说明,...
【贴吧转帖工具】是一种专为百度贴吧用户设计的便捷工具,主要用于提高用户在贴吧中的互动效率。通过这款工具,用户可以实现一键转帖和一键8经验签到的功能,极大地简化了传统操作流程,节省了用户的时间,提升了...
接下来,`shell命令--转帖.txt`可能包含了Linux的常用命令,如`ls`用于列出目录内容,`cd`用于切换目录,`pwd`显示当前工作目录,`mkdir`创建新目录,`rm`删除文件或目录,`cp`复制文件或目录,`mv`移动或重命名文件...
总之,Html2UBBMaxcj_Softii论坛专用转帖工具是一个实用的工具,解决了HTML内容在特定论坛环境下无法正常显示的问题,极大地提高了用户在论坛交流的体验。通过了解和熟练使用这款工具,用户可以更轻松地分享和讨论...
UBB论坛转帖圣手.exeUBB论坛转帖圣手.exe
在IT行业中,编辑人员在处理图像或视频时经常会遇到水印问题。水印可能是他人版权的标识,也可能是不希望展示的信息,去除水印成为了一项必要的技能。本篇文章将详细探讨“编辑人员转帖去水印工具”,并介绍如何使用...
《一键转帖功能插件 for 帝国CMS 6.0 GBK utf8 V1.0》 本文将深入探讨“一键转帖功能插件”在帝国CMS 6.0系统中的应用与实现,该插件适用于GBK及UTF-8编码环境,旨在提升网站内容的分享与传播效率。我们将从安装...
3. 原创保护:在转帖时,可以进行必要的处理,如添加引用、链接原文,尊重原作者,避免侵犯版权。 三、使用注意事项 1. 法律合规:使用这类工具时,必须确保所发布的帖子内容合法,不侵犯他人权益,遵循网络道德...
在论坛转帖的场景下,这个过程可能会更复杂,因为需要考虑图片的显示顺序、缓存策略、错误处理等因素。例如,可能需要在数据库中记录每个图片的缩略图路径,以便快速加载,同时处理上传失败或网络中断的情况。 总的...
"转帖工具插件 for PHPwind 7.5 正式版" 是专门为 PHPwind 7.5 版本设计的一个功能插件,旨在提供便捷的帖子转移功能,帮助管理员或者用户将内容从一个地方轻松移动到另一个地方,而无需直接编辑论坛的原始文件。...
"一键转帖功能插件 for 帝国CMS v1.0.rar" 是一个专为帝国CMS设计的扩展工具,其主要目标是简化用户在网站上分享内容的过程,提高用户体验。这个插件允许用户轻松地将网站上的文章或信息复制并转发到其他平台,如...
- 触发器在特定的数据库事件(如INSERT, UPDATE, DELETE)发生时自动执行,可用于实施业务规则和数据验证。 通过熟练掌握Oracle分析函数和PL/SQL,数据库管理员和开发人员能够更高效地管理和操作数据库,实现更...
根据给定的信息,本文将对一段用于遍历网页的 Delphi 代码进行解析与说明,以便读者能够深入了解其工作原理及应用方式。 ### 一、理解Delphi代码 #### 1.1 概述 本段Delphi代码主要用于在网页上进行元素遍历操作。...
6. **心理素质与时间管理**:在高压环境下保持冷静,合理安排时间,是赢得比赛的重要因素。练习心理调节技巧,如深呼吸、正念冥想,以及制定详尽的比赛策略和时间表,可以帮助参赛者在比赛中保持最佳状态。 综上所...