2011-07-25 43 views

回答

0

核心轉儲在通過默認處理器響應於某些信號正常生成。如果修改該處理程序,則修改該響應,因此不會獲得核心轉儲。

核心轉儲默認是在響應由於失敗而發生的信號(SIGSEGV(訪問未映射內存),SIGILL(無效指令),SIGBUS(各種其他不正確的系統訪問))和SIGABRT信號時生成的,它是當程序本身檢測到致命錯誤時使用(在標準運行時,從斷言或通過調用abort())。它也是其他一些信號的默認值。特別是SIGUSR1,除非它準備好處理它並更改處理程序,否則程序不應該接收它。完整列表見man 7 signal

請注意,「默認處理程序」不是應用程序中的代碼。這對內核來說是一個特殊的值,它應該代表應用程序採取一些特定的操作。這個動作對於某些信號是退出的,對於其他的信號會退出核心轉儲,對其他信號不做任何處理。