C++ 產生core 文件

今天運行一個程序的時候,程序退出,但是沒有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 查看下是否已經打開。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章