在某些應用程序的開發過程中,我們需要可能獲得完整的核心轉儲而不完全停止程序的執行。來自C/C++程序的內聯核心轉儲生成
當然,有些情況會產生核心轉儲,但是我們並不是在談論內存損壞等問題。
我所希望做的是發出一個信號,該程序並沒有產生一個完整的核心或最小衝擊程序執行
這可能嗎?如果是這樣如何?
在某些應用程序的開發過程中,我們需要可能獲得完整的核心轉儲而不完全停止程序的執行。來自C/C++程序的內聯核心轉儲生成
當然,有些情況會產生核心轉儲,但是我們並不是在談論內存損壞等問題。
我所希望做的是發出一個信號,該程序並沒有產生一個完整的核心或最小衝擊程序執行
這可能嗎?如果是這樣如何?
看到這個谷歌圖書館,它可能會幫助:http://code.google.com/p/google-coredumper/
的coredumper庫可以被編譯成應用程序來創建運行程序的 核心轉儲 - 不終止。
哇。好一個。 – 2012-11-21 19:11:36
Coredumpber是Linux,顯然,如果這是你的操作系統一個偉大的想法。
對於其他類POSIX系統中,這樣的事情應該很好地工作:
#include <stdlib.h>
#include <process.h>
// Fork and abort for a core dump. This process keeps running.
if (fork() == 0) abort();
當然環境必須設置傾倒在SIGABRT
核心。你也可以嘗試raise(SIGTERM)
,就像kill -9
。
我想你是指'raise(SIGKILL)',但我明白了 – Karlson
這是操作系統特定的。什麼OS? – Gene
你可以'fork'然後'放棄'另一個進程。 –
核心轉儲是什麼意思?完整的內存轉儲?堆棧跟蹤? – 2012-11-21 19:09:54