Linux core dump的详细介绍及使用

系统 Linux
在使用半导体作为内存的材料前,人类是利用线圈当作内存的材料(发明 者为王安),线圈就叫作 core ,用线圈做的内存就叫作 Linux core memory。

我们在开发(或使用)一个程序时,最怕的就是程序莫明其妙地当掉。虽然系 统没事,但我们下次仍可能遇到相同的问题。于是这时操作系统就会把程序当掉 时的内存内容 dump 出来,让我们或是debugger 做为参考。这个动作就叫作 core dump。


1.何谓 core?
在使用半导体作为内存的材料前,人类是利用线圈当作内存的材料(***为王安),线圈就叫作 core ,用线圈做的内存就叫作 core memory。如今 ,半导体工业澎勃发展,已经没有人用 core memory 了,不过,在许多情况下, 人们还是把记忆体叫作 core 。


2.何谓 Linux core dump?
我们在开发(或使用)一个程序时,最怕的就是程序莫明其妙地当掉。虽然系 统没事,但我们下次仍可能遇到相同的问题。于是这时操作系统就会把程序当掉 时的内存内容 dump 出来(现在通常是写在一个叫 core 的 file 里面),让 我们或是debugger 做为参考。这个动作就叫作 Linux core dump。


3.为何会发生 Linux core dump?
前面说过,在程序当掉时出错。在 C/C++语言中,最常发生错误的地方就是指 针有问题。您可以利用 core 文件和 debugger 把错误找出来(要怎麽在 debugger 中使用 core 文件?man 一下gdb 吧!)。


4.我可以把 core 文件删掉吗?
如果你不会、不能、不需要修改程序,那就放心地把它删除了吧!要怎麽才不会让 core 文件出现?如果用的是tcsh的话, 以试著在 .tcshrc 里加一行:limit coredumpsize 0
如果用的是bash的话, 在/etc/profile里加上(或者修改)一条:ulimit -c 0


5.有一招, 可以让你看出 core ***用的地方
gdb -c core进去后打 where, 就可以 show 出你是在程序哪一行当掉的,还有在当掉时在哪个 function 里, 这个 function是被哪个function 所 call 的, 而这个 function 又是被哪个function所 call 的.... 一直到 main()由这个信息, 可以找出五六成的 bug........ 屡试不爽但, 先决条件, 当你在 compile 时必须把 debug information的选项打开 不然, 就会出现一大堆你看不懂的东西,而不是你喜欢的源程序。

【编辑推荐】

  1. Linux测试工具tcpdump执行相关功能的命令
  2. Linux rsync同步由手动到自动
  3. MySQLdump增量备份、完全备份与恢复
  4. CentOS系统如何解决鼠标花屏的问题
  5. 使用mysqldump备份数据库的具体步骤
     
责任编辑:chenqingxiang
相关推荐

2010-06-02 09:31:43

Linux core

2010-03-09 16:11:59

Linux重定向

2010-03-04 11:07:24

Linux finge

2010-03-04 10:54:45

Linux telne

2017-10-30 16:50:41

Linuxconst

2010-03-09 09:55:14

Linux mount

2010-06-21 16:57:11

Linux Arch

2010-03-02 14:01:58

Linux硬件信息命令

2011-07-19 09:25:52

2010-03-05 15:20:25

Linux man命令

2009-12-24 16:47:22

Linux安装Perl

2011-06-21 11:05:41

内联函数

2009-12-15 14:05:42

Fedora Core

2023-02-01 09:15:41

2010-06-22 09:28:31

Linux at命令

2010-06-18 17:35:16

Linux Anacr

2009-12-18 11:48:24

网络安装 Linux

2010-06-23 15:36:23

Linux Bug B

2009-12-11 15:59:00

Linux grep指
点赞
收藏

51CTO技术栈公众号