Core Dump解析(1)
http://haobing2005.blog.163.com/blog/static/466678620097180467346/
今天調試一個程序, 用到了core dump, 但是不知道是做什么用的,查了一下,明白了些, 記于此.
什么是Core Dump?
Core的意思是內存, Dump的意思是扔出來, 堆出來.
開發和使用Unix程序時, 有時程序莫名其妙的down了, 卻沒有任何的提示(有時候會提示core dumped). 這時候可以查看一下有沒有形如core.進程號的文件生成, 這個文件便是操作系統把程序down掉時的內存內容扔出來生成的, 它可以做為調試程序的參考.
core dump又叫核心轉儲, 當程序運行過程中發生異常, 程序異常退出時, 由操作系統把程序當前的內存狀況存儲在一個core文件中, 叫core dump.
如何使用core文件?
gdb -c core文件路徑 [應用程序的路徑]
進去后輸入where回車, 就可以顯示程序在哪一行當掉的, 在哪個函數中.
為什么沒有core文件生成呢?
有時候程序down了, 但是core文件卻沒有生成. core文件的生成跟你當前系統的環境設置有關系, 可以用下面的語句設置一下, 然后再運行程序便成生成core文件.
ulimit -c unlimited
core文件生成的位置一般于運行程序的路徑相同, 文件名一般為core.進程號
4. 用gdb查看core文件:
下面我們可以在發生運行時信號引起的錯誤時發生core dump了.
發生core dump之后, 用gdb進行查看core文件的內容, 以定位文件中引發core dump的行.
gdb [exec file] [core file]
如:
gdb ./test test.core
在進入gdb后, 用bt命令查看backtrace以檢查發生程序運行到哪里, 來定位core dump的文件->行.
總結
以上是生活随笔為你收集整理的Core Dump解析(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转载]jquery 消息插件--仿QQ
- 下一篇: 世界顶级精英们的人生哲学(转)