`
nlslzf
  • 浏览: 1023108 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux core dump的详细介绍及使用

    博客分类:
  • c++
 
阅读更多

http://linux.cn/thread/3377/1/1/

 

我们在开发(或使用)一个程序时,最怕的就是程序莫明其妙地当掉。虽然系 统没事,但我们下次仍可能遇到相同的问题。于是这时操作系统就会把程序当掉 时的内存内容 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的选项打开 不然, 就会出现一大堆你看不懂的东西,而不是你喜欢的源程序。
  
  我们在开发(或使用)一个程序时,最怕的就是程序莫明其妙地当掉。虽然系 统没事,但我们下次仍可能遇到相同的问题。于是这时操作系统就会把程序当掉 时的内存内容 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的选项打开 不然, 就会出现一大堆你看不懂的东西,而不是你喜欢的源程序。
<!--EndFragment-->
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics