Linux下快速手動產生core文件

原文連接:https://blog.csdn.net/jctian000/article/details/79695006函數

 

當咱們配置好自動生成core文件的環境後,若不想寫致使崩潰的程序驗證,那要怎麼快速產生core呢?

先看下產生core文件的條件:

當程序接收到如下UNIX信號會產生core文件:

.net

 

 
在系統默認動做列,「終止w/core」表示在進程當前工做目錄的core文件中複製了該進程的存儲圖像(該文件名爲core,由此能夠看出這種功能好久以前就是UNIX功能的一部分)。大多數UNIX調試程序都使用core文件以檢查進程在終止時的狀態。
core文件的產生不是POSIX.1所屬部分,而是不少UNIX版本的實現特徵。UNIX第6版沒有檢查條件(a)和(b),而且其源代碼中包含以下說明:「若是你正在找尋保護信號,那麼當設置-用戶-ID命令執行時,將可能產生大量的這種信號」。4.3 + BSD產生名爲core.prog的文件,其中prog是被執行的程序名的前1 6個字符。它對core文件給予了某種標識,因此是一種改進特徵。

表中「硬件故障」對應於實現定義的硬件故障。這些名字中有不少取自UNIX早先在DP-11上的實現。請查看你所使用的系統的手冊,以確切地肯定這些信號對應於哪些錯誤類型。

下面比較詳細地說明這些信號。

• SIGABRT 調用abort函數時產生此信號。進程異常終止。

• SIGBUS 指示一個實現定義的硬件故障。

• SIGEMT 指示一個實現定義的硬件故障。
EMT這一名字來自PDP-11的emulator trap 指令。

• SIGFPE 此信號表示一個算術運算異常,例如除以0,浮點溢出等。

• SIGILL 此信號指示進程已執行一條非法硬件指令。
4.3BSD由abort函數產生此信號。SIGABRT如今被用於此。

• SIGIOT 這指示一個實現定義的硬件故障。
IOT這個名字來自於PDP-11對於輸入/輸出TRAP(input/output TRAP)指令的縮寫。系統V的早期版本,由abort函數產生此信號。SIGABRT如今被用於此。

• SIGQUIT 當用戶在終端上按退出鍵(通常採用Ctrl-\)時,產生此信號,並送至前臺進
程組中的全部進程。此信號不只終止前臺進程組(如SIGINT所作的那樣),同時產生一個core文件。

• SIGSEGV 指示進程進行了一次無效的存儲訪問。
名字SEGV表示「段違例(segmentation violation)」。

• SIGSYS 指示一個無效的系統調用。因爲某種未知緣由,進程執行了一條系統調用指令,
但其指示系統調用類型的參數倒是無效的。

• SIGTRAP 指示一個實現定義的硬件故障。
此信號名來自於PDP-11的TRAP指令。

• SIGXCPU SVR4和4.3+BSD支持資源限制的概念。若是進程超過了其軟C P U時間限制,則產生此信號。

• SIGXFSZ 若是進程超過了其軟文件長度限制,則SVR4和4.3+BSD產生此信號。

每一種信號又對應一個編號,用kill -l命令能夠查看具體的對應列表:


找到一種知足產生core文件條件的信號,用kill 命令對應用程序發送此信號便可:

如:  kill -6 6864
        kill -11 6864


————————————————
版權聲明:本文爲CSDN博主「你好xyz」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/jctian000/article/details/796950063d

相關文章
相關標籤/搜索