2011-04-26 32 views
0

我正在研究「在Linux平臺上創建Postmortem數據記錄器」。我之前也發佈過關於這個項目的問題。在那裏,我得到了在RHEL版本中創建核心轉儲文件的調用流程機制:2.6.18.128-el5。如何用Linux內核中的用戶定義處理程序替換缺省處理程序,該處理程序處理生成核心轉儲的異常?

得出如下:

File          Function called 
1.source/ arch/i386/kernel/signal.c -----> do_signal() 
2.source/kernel/signal.c  ----------> get_signal_to_deliver() 
3.source/fs/exec.c   -------------> do_coredump() 
4.source/fs/binfmt_elf.c -------------> elf_core_dump() 

現在,按照項目要求,我需要的是處理各種異常(SIGSEGVSIGFPESIGABRT等)我自己的用戶定義的信號處理程序修改默認的信號處理函數的定義造成核心。此外,我需要構建內核,以便用我的處理程序替換默認處理程序來保持內核中的更改。

任何人都可以分享訴訟來做這些操作嗎?

提前感謝所有repliers :)

感謝 VLC

+0

您是否想要更改內核工作方式,或者您想要在用戶模式代碼中設置信號處理程序? – osgx 2011-04-26 13:49:59

+0

是的...我想知道內核在生成coredump時是如何工作的。基於此,我想用我自己的處理程序修改默認處理程序並構建內核。因此,我想操作該新內核。 – vlc 2011-04-27 07:09:37

回答

1

SIGFPE,SIGABRT,SIGSEGV和其他一些人已經默認生成一個核心轉儲,看到signal(7)。但是,許多發行版將核心文件大小資源限制設置爲0,禁用核心轉儲生成。您可以通過重新啓用它:

ulimit -c unlimited 

相反的unlimited,你可以通過文件系統塊核心轉儲應該採取的最大數量。

相關問題