1. ubuntu core mp的文件在哪個目錄
預設是執行程序所在的目錄
2. RedHat linux下如何生成core mp文件
在linux平台下,設置core mp文件生成的方法:
1 )如何生成 coremp 文件
登陸 LINUX 伺服器,任意位置鍵入
echo "ulimit -c 1024" >> /etc/profile
退出 LINUX 重新登陸 LINUX
鍵入 ulimit -c
如果顯示 1024 那麼說明 coremp 已經被開啟。
1024 限制產生的 core 文件的大小不能超過 1024kb,可以使用參數unlimited,取消該限制
ulimit -c unlimited
2 ) . core 文件的簡單介紹
在一個程序崩潰時,它一般會在指定目錄下生成一個 core 文件。 core 文件僅僅是一個內存映象 ( 同時加上調試信息 ) ,主要是用來調試的。
3 ) . 開啟或關閉 core 文件的生成
用以下命令來阻止系統生成 core 文件 :
ulimit -c 0
下面的命令可以檢查生成 core 文件的選項是否打開 :
ulimit -a
該命令將顯示所有的用戶定製,其中選項 -a 代表「 all 」。
也可以修改系統文件來調整 core 選項
在 /etc/profile 通常會有這樣一句話來禁止產生 core 文件,通常這種設置是合理的 :
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
但是在開發過程中有時為了調試問題,還是需要在特定的用戶環境下打開 core 文件產生的設置。
在用戶的 ~/.bash_profile 里加上 ulimit -c unlimited 來讓特定的用戶可以產生 core 文件。
如果 ulimit -c 0 則也是禁止產生 core 文件,而 ulimit -c 1024 則限制產生的 core 文件的大小不能超過 1024kb
4 ) . 設置 Core Dump 的核心轉儲文件目錄和命名規則
/proc/sys/kernel/core_uses_pid 可以控制產生的 core 文件的文件名中是否添加 pid 作為擴展 ,如果添加則文件內容為 1 ,否則為 0
proc/sys/kernel/core_pattern 可以設置格式化的 core 文件保存位置或文件名 ,比如原來文件內容是 core-%e
可以這樣修改 :
echo "/corefile/core-%e-%p-%t" > core_pattern
將會控制所產生的 core 文件會存放到 /corefile 目錄下,產生的文件名為 core- 命令名 -pid- 時間戳
以下是參數列表 :
%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 coremp into the filename 添加導致產生 core 的信號
%t - insert UNIX time that the coremp occurred into filename 添加 core 文件生成時的 unix 時間
%h - insert hostname where the coremp happened into filename 添加主機名
%e - insert coremping executable name into filename 添加命令名
6 ) . 一個小方法來測試產生 core 文件
直接輸入指令 :
kill -s SIGSEGV $$
發生coremp一般都是在進程收到某個信號的時候,Linux上現在大概有60多個信號,可以使用 kill -l 命令全部列出來。
針對特定的信號,應用程序可以寫對應的信號處理函數。如果不指定,則採取默認的處理方式, 默認處理是coremp的信號如下:
3)SIGQUIT 4)SIGILL 6)SIGABRT 8)SIGFPE 11)SIGSEGV 7)SIGBUS 31)SIGSYS
5)SIGTRAP 24)SIGXCPU 25)SIGXFSZ 29)SIGIOT
我們看到SIGSEGV在其中,一般數組越界或是訪問空指針都會產生這個信號。另外雖然默認是這樣的,但是你也可以寫自己的信號處理函數改變默認行為。
上述內容只是產生coremp的必要條件,而非充分條件。要產生core文件還依賴於程序運行的shell,可以通過ulimit -a命令查看
3. window上如何設置才能獲取mp文件
第一步丶打開電腦的mp文件存儲功能。
在「我的電腦」上右鍵——屬性——高級,選好後點確定,下次再出現藍屏時,系統就會存儲下mp文件,一般存放位置在系統盤的minimp文件夾下。(建議在該文件夾上點右鍵——屬性——發送到——桌面快捷方式,以後就能在桌面上找到該文件夾了) 。
第二步丶下載安裝
隨便選一個下載,安裝時,一路「下一步」就行了。
第三步丶使用windbg診斷藍屏錯誤
上面兩步設好後,就想辦法開始「製造」藍屏吧,平時怎麼用會出現藍屏就拚命用直到出現藍屏。
藍屏後重啟,在minimp文件夾下會出現一個以日期為文件名的東東,那就是我們要的了。接下來打開windbg,點屏幕左下的 「開始」,軟體啟動點File——Open Crash Dump, 然後找到minimp文件夾,mp文件一般是"時間.dmp",打開後就會自動分析了。分析完後,看最下面,找到3.probably caused by這一行, 那個myfault.sys文件就是罪魁禍首。 導入mp文件分析完畢後,不要關閉,在後面輸入 !analyze -v ,這個命令可以查看mp文件的詳細情況。
4. ubuntu core mp的文件在哪個目錄
ubuntu默認不創建core文件。需要用命令 ulimit -c unlimited 允許產生core mp且core文件大小不受限制,然後在可執行版文件的同一目權錄下即可找了 但當前設置的ulimit只對當前會話有效,若想系統均有效,則需要進行如下設置: 在/etc/profile中加入以下一行,這將允許生成coremp文件 ulimit-c unlimited
5. 如何生成coremp文件
使用C/C++語言開發程序時,當程序crash的時候產生core mp文件對於調試程序是很有幫助的。在Redhat Linux系統中默認是不生成core mp文件的,這是因為在/etc/profile文件中有這樣一行
ulimit -S -c 0 /dev/null 2&1
第一種方法是修改/etc/profile,把ulimit那一行改為
ulimit -S -c unlimited /dev/null 2&1
這樣設置後系統允許所有用戶生成沒有大小限制的core mp文件。這樣做的優點是不需要重起系統,缺點是無法控制只讓某些用戶生成core mp文件。
* soft core 0
如果只想對某些用戶或用戶組打開core mp,可以加入
user soft core 0或@group soft core 0
注意如果通過修改/etc/security/limits.conf文件打開core mp,還需要注釋掉/etc/profile中的ulmit那一行
#ulimit -S -c 0 /dev/null 2&1
這樣修改的優點是可以針對特定用戶或特定組打開core mp文件,缺點是需要重起系統。
最後說一下生成core mp文件的位置,默認位置與可執行程序在同一目錄下,文件名是core.***,其中***是一個數字。core mp文件名的模式保存在/proc/sys/kernel/core_pattern中,預設值是core。通過以下命令可以更改core mp文件的位置(如希望生成到/tmp/cores目錄下)
6. 什麼是Core Dump怎麼使用
開發和使用Unix程序時, 有時程序莫名其妙的down了, 卻沒有任何的提示(有時候會提示core mped). 這時候可以查看一下有沒有形如core.進程號的文件生成, 這個文件便是操作系統把程序down掉時的內存內容扔出來生成的, 它可以做為調試程序的參考.
core mp又叫核心轉儲, 當程序運行過程中發生異常, 程序異常退出時, 由操作系統把程序當前的內存狀況存儲在一個core文件中, 叫core mp.
gdb -c core文件路徑 [應用程序的路徑]
進去後輸入where回車, 就可以顯示程序在哪一行當掉的, 在哪個函數中.
有時候程序down了, 但是core文件卻沒有生成. core文件的生成跟你當前系統的環境設置有關系, 可以用下面的語句設置一下, 然後再運行程序便成生成core文件.core文件生成的位置一般於運行程序的路徑相同, 文件名一般為core.進程號