假設遠程站點發生罕見錯誤,但不會使應用程序崩潰。我仍然希望在發生這種情況時創建一個小型轉儲文件,以便我可以使用一些信息,主要是調用堆棧。是否可以通過編程創建小型轉儲文件而不會崩潰?
僞代碼如下:
try
{
doStuff();
}
catch(_com_error &e)
{
make_minidump(); // is this possible?
dump_com_error(e);
return FALSE;
}
我看到所有的例子要求我將有可能導致應用程序崩潰(用於演示目的至少)產生轉儲文件,但我不希望去做。有沒有可能像這樣創建轉儲文件?
我知道我可以去任務管理器並創建正在運行的進程的轉儲文件,同樣我可以使用ProcessExplorer來實現相同的目標,所以它應該是可能的。
與此同時,在我看到的所有示例中,轉儲文件僅在控件進入SetUnhandledExceptionFilter時纔會生成,該文件在應用程序崩潰時被調用!
作爲最後的手段,生成轉儲文件的唯一方法是故意使應用程序崩潰,如下所示:這會產生超出崩潰的任何有用的東西嗎?因爲我知道在這種情況下造成了這次事故的原因。
LONG CALLBACK unhandled_handler(EXCEPTION_POINTERS* e)
{
make_minidump(e);
return EXCEPTION_CONTINUE_SEARCH;
}
int main()
{
SetUnhandledExceptionFilter(unhandled_handler);
return *(int*)0;
}
https://開頭MSDN。 microsoft.com/en-us/library/windows/desktop/ms680360(v=vs.85).aspx –
可能的重複(未標記爲2009年的日期)http://stackoverflow.com/questions/1547211/how-to -create-minidump-for-my-process-when-it-crash –