今天執行乙個程式的時候,程式退出,但是沒有core檔案,可以穩定復現,查了查產生core檔案條件,不知道怎麼快速定位這個問題:
一:c++ 產生core檔案的條件:
1:是允許core檔案產生,例如你設定 ulimit -c unlimited。並且對core檔案的產生目錄(也就是工作目錄)要有寫許可權。
2:是程式收到了產生core檔案的訊號,例如sigabrt訊號。
二:linux 系統設定core開關的方法
1.檢視當前是否已經開啟了此開關 通過命令:ulimit -c 如果輸出為 0 ,則代表沒有開啟。如果為unlimited則已經開啟了,就沒必要在做開啟。
2.通過命令開啟 ulimit -c unlimited .然後通過步驟1,可以監測是否開啟成功。
3.如果你要取消,很簡單:ulimit -c 0 就可以了
通過上面的命令修改後,一般都只是對當前會話起作用,當你下次重新登入後,還是要重新輸入上面的命令,所以很麻煩。我們可以把通過修改 /etc/profile檔案 來使系統每次自動開啟。
步驟如下:
1.首先開啟/etc/profile檔案
一般都可以在檔案中找到 這句語句:ulimit -s -c 0 > /dev/null 2>&1.ok,根據上面的例子,我們只要把那個0 改為 unlimited 就ok了。然後儲存退出。
2.通過source /etc/profile 使當期設定生效。
3.通過ulimit -c 檢視下是否已經開啟。
c 產生core檔案及除錯
1.除錯 core dump 程式執行時,經常會因為段錯誤 segment fault 而退出,作業系統會把此程式當前記憶體資訊 dump 到磁碟上 詳見 wiki 即生成 core 檔案.對 core 進行分析可以很快分析出導致程式 crash 的地方.系統預設不會生成 core 檔案,需要進一步...
core檔案的產生
檢視core檔案產生的條件限制 ulimit a 1.在當前的shell視窗下設定產生core檔案的條件 ulimit c unlimited 或 ulimit c 1024 2.設定當前的賬戶產生core檔案 在特定的使用者環境下開啟core檔案產生的設定 在使用者的 bash profile裡加...
linux下 c程式崩潰時產生core檔案的設定
c程式執行崩潰時,如果能夠自動產生core檔案,會對問題的分析和定位有一定的幫助,但是需要一定的設定才可以開啟該選項 如果程式本身有問題,在崩潰時,可能會產生core檔案 注意 不是一定會產生的 產生的core檔案預設是在執行檔案的目錄下,但也可以指定 修改 etc security limits....