簡體   English   中英

如何防止linux殺死我的進程並生成核心文件

[英]how to prevent linux to kill my process and generate core file instead

我正在測試一個應用程序,當該應用程序消耗大部分可用內存時,內核會殺死我的進程。 但是我要進程死掉並生成核心文件,以供調查之用。 我正在使用Redhat 5.4

反正有這樣做嗎?

從“可用內存的大部分”描述中,我假設您的系統內存不足,內核內存不足處理程序會殺死您的進程。 它會被SIGTERM殺死,因此在正常情況下您不會獲得核心轉儲。

通過在程序中處理SIGTERM並在信號處理程序中向進程發送SIGSEGV,從而觸發核心轉儲,您可能能夠獲得核心轉儲。 OTOH在內存不足的情況下,可能導致許多其他進程死亡,這些進程也被OOM處理程序殺死。

許多信號的默認操作是核心轉儲。 如果該程序未覆蓋Linux默認信號處理程序,那么如果設置了正確的ulimit則可能導致SIGQUIT發生核心轉儲。

可以使用kill -SIGQUIT (process_id)發送SIGQUIT,或者,如果程序與鍵盤相關聯,則通過鍵入Ctrl- \\發送SIGQUIT

您應該找到OOM發生時程序將收到的信號。 然后使用信號功能設置處理程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM