(转)关于Linux核心转储文件 core dump
生活随笔
收集整理的這篇文章主要介紹了
(转)关于Linux核心转储文件 core dump
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
所謂核心轉(zhuǎn)儲文件是內(nèi)含進(jìn)程終止時(shí)內(nèi)存映像的一個(gè)文件。
產(chǎn)生條件:特定的信號會(huì)引發(fā)進(jìn)程創(chuàng)建一個(gè)核心轉(zhuǎn)儲文件并終止運(yùn)行。 包括哪些特定信號,請參見http://man7.org/linux/man-pages/man7/signal.7.html
??????? 關(guān)于core文件更詳細(xì)內(nèi)容http://man7.org/linux/man-pages/man5/core.5.html
??????? 使用ulimit -c filesize命令,可以限制core文件的大小(filesize的單位為kbyte)。如果生成的信息超過此大小,將會(huì)被裁剪,最終生成一個(gè)不完整的core文件。在調(diào)試此core文件的時(shí)候,gdb會(huì)提示錯(cuò)誤。若ulimit -c unlimited,則表示core文件的大小不受限制。
如果想讓修改永久生效,則需要修改配置文件,如 .bash_profile、/etc/profile或/etc/security/limits.conf。 2.core文件的生成路徑和名稱
core文件默認(rèn)認(rèn)生成路徑是進(jìn)程的工作目錄中,默認(rèn)名為core。若系統(tǒng)生成的core文件采用默認(rèn)的名core,則新的core文件生成將覆蓋原來的core文件。
1)/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作為擴(kuò)展。文件內(nèi)容為1,表示添加pid作為擴(kuò)展名,生成的core文件格式為core.xxxx;為0則表示生成的core文件同一命名為core。
可通過以下命令修改此文件:
echo "1" > /proc/sys/kernel/core_uses_pid
2)/proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。(從Linux2.6版本才有,之前版本可能沒有此文件)
可通過以下命令修改此文件:
echo "/corefile/core-%e-%p-%t" >/proc/sys/kernel/core_pattern,可以將core文件統(tǒng)一生成到/corefile目錄下,產(chǎn)生的文件名為core-命令名-pid-時(shí)間戳
以下是參數(shù)列表:
%p - insert pid into filename 添加pid
%u - insert current uid into filename 添加當(dāng)前uid
%g - insert current gid into filename 添加當(dāng)前gid
%s - insert signal that caused the coredump into the filename 添加導(dǎo)致產(chǎn)生core的信號
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成時(shí)的unix時(shí)間
%h - insert hostname where the coredump happened into filename 添加主機(jī)名
%e - insert coredumping executable name into filename 添加命令名
注意若你指定的文件夾不存在,則core文件不會(huì)生成。
3.core文件的查看
gdb [exec file] [core file]
如:
gdb ./test test.core
在進(jìn)入gdb后, 用bt命令查看backtrace以檢查發(fā)生程序運(yùn)行到哪里, 來定位core文件->行.
GDB中鍵入where,也會(huì)看到程序崩潰時(shí)堆棧信息(當(dāng)前函數(shù)之前的所有已調(diào)用函數(shù)的列表(包括當(dāng)前函數(shù)),gdb只顯示最近幾個(gè)) 咳,天下文章一大抄
參考 http://blog.chinaunix.net/uid-21411227-id-1826911.html
http://www.nginx.cn/1521.html
http://www.cnblogs.com/xuxm2007/archive/2010/10/22/1858095.html
?????? 強(qiáng)制進(jìn)程產(chǎn)生coredump,檢測死鎖以及進(jìn)程快照?? http://blog.chinaunix.net/uid-23629988-id-175809.html
---------------------
作者:二手碼農(nóng)
來源:CSDN
原文:https://blog.csdn.net/hu_jiacheng/article/details/40950471
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
產(chǎn)生條件:特定的信號會(huì)引發(fā)進(jìn)程創(chuàng)建一個(gè)核心轉(zhuǎn)儲文件并終止運(yùn)行。 包括哪些特定信號,請參見http://man7.org/linux/man-pages/man7/signal.7.html
??????? 關(guān)于core文件更詳細(xì)內(nèi)容http://man7.org/linux/man-pages/man5/core.5.html
接下來我們說一些關(guān)于core文件常見的情況和問題。
1.core文件的生成開關(guān)和大小限制
輸入ulimit -a命令我們可以看到第一行core文件大小為0,即我們關(guān)閉了core文件產(chǎn)生,若不為0,就打開了唄。或ulimit -c只顯示core文件大小。??????? 使用ulimit -c filesize命令,可以限制core文件的大小(filesize的單位為kbyte)。如果生成的信息超過此大小,將會(huì)被裁剪,最終生成一個(gè)不完整的core文件。在調(diào)試此core文件的時(shí)候,gdb會(huì)提示錯(cuò)誤。若ulimit -c unlimited,則表示core文件的大小不受限制。
如果想讓修改永久生效,則需要修改配置文件,如 .bash_profile、/etc/profile或/etc/security/limits.conf。 2.core文件的生成路徑和名稱
core文件默認(rèn)認(rèn)生成路徑是進(jìn)程的工作目錄中,默認(rèn)名為core。若系統(tǒng)生成的core文件采用默認(rèn)的名core,則新的core文件生成將覆蓋原來的core文件。
1)/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作為擴(kuò)展。文件內(nèi)容為1,表示添加pid作為擴(kuò)展名,生成的core文件格式為core.xxxx;為0則表示生成的core文件同一命名為core。
可通過以下命令修改此文件:
echo "1" > /proc/sys/kernel/core_uses_pid
2)/proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。(從Linux2.6版本才有,之前版本可能沒有此文件)
可通過以下命令修改此文件:
echo "/corefile/core-%e-%p-%t" >/proc/sys/kernel/core_pattern,可以將core文件統(tǒng)一生成到/corefile目錄下,產(chǎn)生的文件名為core-命令名-pid-時(shí)間戳
以下是參數(shù)列表:
%p - insert pid into filename 添加pid
%u - insert current uid into filename 添加當(dāng)前uid
%g - insert current gid into filename 添加當(dāng)前gid
%s - insert signal that caused the coredump into the filename 添加導(dǎo)致產(chǎn)生core的信號
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成時(shí)的unix時(shí)間
%h - insert hostname where the coredump happened into filename 添加主機(jī)名
%e - insert coredumping executable name into filename 添加命令名
注意若你指定的文件夾不存在,則core文件不會(huì)生成。
3.core文件的查看
gdb [exec file] [core file]
如:
gdb ./test test.core
在進(jìn)入gdb后, 用bt命令查看backtrace以檢查發(fā)生程序運(yùn)行到哪里, 來定位core文件->行.
GDB中鍵入where,也會(huì)看到程序崩潰時(shí)堆棧信息(當(dāng)前函數(shù)之前的所有已調(diào)用函數(shù)的列表(包括當(dāng)前函數(shù)),gdb只顯示最近幾個(gè)) 咳,天下文章一大抄
參考 http://blog.chinaunix.net/uid-21411227-id-1826911.html
http://www.nginx.cn/1521.html
http://www.cnblogs.com/xuxm2007/archive/2010/10/22/1858095.html
?????? 強(qiáng)制進(jìn)程產(chǎn)生coredump,檢測死鎖以及進(jìn)程快照?? http://blog.chinaunix.net/uid-23629988-id-175809.html
---------------------
作者:二手碼農(nóng)
來源:CSDN
原文:https://blog.csdn.net/hu_jiacheng/article/details/40950471
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
轉(zhuǎn)載于:https://www.cnblogs.com/heluan/p/10278831.html
總結(jié)
以上是生活随笔為你收集整理的(转)关于Linux核心转储文件 core dump的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 遥感图像解译与单相机摄影测量
- 下一篇: 8、Semantic-UI之其他按钮样式