当前位置:首页 > Java知识 > 正文内容

core dump file(coredump一般是啥原因)

abcsky883个月前 (02-08)Java知识71

本篇文章给大家谈谈

最来在项目中遇到大型程序出现SIGSEGV ,一直不知道用core dump工具来调试程序,花了近一周的时间,才定位问题,老大很生气,后果很严重,呵呵,事后仔细学习了这块的知识,了解一点core dump的知识。

core dump file(coredump一般是啥原因)

      在使用半导体作为内存的材料前,人类是利用线圈当作内存的材料(发明者为王安),线圈就叫作core ,用线圈做的内存就叫作“core memory”(线圈的单词应该是coil,呵呵)如今,半导体工业澎勃发展,已经没有人用线圈当内存了,不过,在许多情况下,人们还是把内存叫作“core”。

所以注意了:这里的core不是核心,而是内存不过结合实际来看,好像也有点“内核所占内存”网站建设网络推广公的意思       core dump又是什么东东?我们在开发(或使用)一个程序时,最怕的就是程序莫明其妙地挂掉。

虽然系统没事,但我们下次仍可能遇到相同的问题于是,这时操作系统就会把程序挂掉时的 内存内容写入一个叫做core的文件里(这个写入的动作就叫dump,dump的英语意思是垃圾、倾倒从这里来看,这些内存的内容是程序错误运行的结果,所以算是垃圾,把他弄出来就好比从大的内存池里“倾倒”。

),以便于我们调试这个过程,因此叫做core dump1. 在嵌入式系统中,有时core dump直接从串口打印出来,结合objdump查找ra和epa地址,运用栈回溯,可以找到程序出错的地方2. 在一般L网站建设网络推广公inux系统中,默认是不会产生core dump文件的,通过ulimit -c来查看core dump文件的大小,一般开始是0,可以设置core文件大小,ulimit -c 1024(kbytes单位)或者ulimit -c unlimited。

3. core dump文件输出设置,一般默认是当前目录,可以在/proc/sys/kernel中找到core-user-pid,通过echo "1" > /proc/sys/kernel/core-user-pid使core文件名加上pid号,还可以用

mkdir -p /root/corefileecho "/root/corefile/core-%网站建设网络推广公e-%p-%t" > /proc/sys/kernel/core-pattern控制core文件保存位置和文件名格式。

以下是参数列表:    %p - insert pid into filename 添加pid    %u - insert current uid into filename 添加当前uid    %g - insert current gid into filename 添加当前gid

%s - insert signal that caused the coredump into the filename 添加导致产生core的信号    %t - insert UNIX 网站建设网络推广公time that the coredump occurred into filename 添加core文件生成时的unix时间

    %h - insert hostname where the coredump happened into filename 添加主机名    %e - insert coredumping executable name into filename 添加命令名

4. 用gdb查看core文件:下面我们可以在发生运行时信号引起的错误时发生core dump了.编译时加上-g发生core dump之后, 用gdb进行查看core文件的内容, 以定位文件中引发core du网站建设网络推广公mp的行.

gdb [exec file] [core file]如:gdb ./test test.core在进入gdb后, 用bt命令查看backtrace以检查发生程序运行到哪里, 来定位core dump的文件行.

5. 给个例子test.cvoid a(){   char *p = NULL;   printf("%d/n", *p);}int main(){    a();    return 0;}编译 gcc -g -o test test.c

运行 ./test报segmentation fault(core dump)gdb ./test test.core如果生成的是test.网站建设网络推广公core.嵌入式Linux中文站最专业的中文嵌入式Linux网站,8年磨剑,注册用户数万人

!分享嵌入式 & Linux技术干货、教程、资讯、高薪职位订阅点击标题下方“嵌入式Linux中文站”分享点击右上角按钮投稿admin@embeddedlinux.org.cn

点击下方“阅读原文”查看更多

扫描二维码推送至手机访问。

版权声明:本文由海南拓宏网络科技工作室发布,如需转载请注明出处。

本文链接:http://4blc.com/post/15867.html

分享给朋友:

“core dump file(coredump一般是啥原因)” 的相关文章

百万年薪的程序员(程序员100万年薪)

本篇文章给大家谈谈 《编程之道》出自美国一位资深的程序设计师 Geoffrey James 之手相传作者早起打太极拳的时候,突然开悟,悟到了编程之道本文章我自己整理的番外篇,哈哈哈,有点儿无节操1、程序员见禅师:我学了 hello world 和水仙花数,想自己开发个操作系统,希望...

java 面经手册(java面试经验)

本篇文章给大家谈谈 《对线面试官》是我一字字敲出来的,是我准备跳槽时按照自己的思路撰写而成它不会花长的篇幅讲述基础API相关的知识,会着重讲解重点高频率面试题,又或是实际工作中如何使用这项技术的它模拟真实的面试场景,面试者实际的回答内容可能是怎么样的。 如果有看过的人,自然...

东软培训学校(东软软件培训中心怎么样)

本文分享给大家的是: 东软实训:JAVA就业精品班 热招中! 申请:周一至周五9:00-18:00 开课时间:2016年4月中旬具体介绍为贯彻落实《国家中长期教育改革和发展规划纲要》和《国家中长期人才发展规划纲要》,提升大学生的就业能力,加强东软集团及整个软件行业的...

java未来发展(java目前前景)

今天给各位分享 这两种语言都有很大的社区,而且都是开源的这意味着程序员不断地用这些语言修复错误并更新它们,使这两种语言都成为未来可行的编码选择学习任何一种语言都会帮助你找到计算机科学的工作,但预测未来的趋势会更进一步很难。 总是会有不同偏好的程序员,Java吸引了那些喜欢更...

java 基础 面试题(java基础面试题大全)

本篇文章给大家谈谈 1、何为编程?编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种...

5个降号降哪个调(5个脚趾名称)

今天给各位分享 优化 JVM 吞吐量和避免运行时瓶颈的最佳方法是将 Java 性能分析作为团队持续开发和部署 (CI/CD) 策略的关键部分以下是五个 Java 性能分析技巧和最佳实践,可帮助你充分利用本地硬件和云托管运行时环境。 1. 永远不要关闭Java性能分析Java...