自定義VS程式異常處理及除錯Dump檔案 一

2022-04-30 23:30:17 字數 1622 閱讀 8061

dump檔案(dump file),也叫轉儲檔案,以.dmp為檔案字尾。dump檔案是程序在記憶體中的映象檔案,通過轉換然後儲存成以.dmp字尾的檔案。dump檔案根據儲存時的選項不同,會生成不同大小的檔案,其中記錄資訊也自然有所不同。

程式分兩種,核心模式程式和使用者模式程式,也即ring0程式和ring3程式。dump檔案是伴隨著程式而生成的,所以dump檔案也同樣分兩種。 

1. kernel-mode dump files(核心模式dump檔案),主要是驅動程式,此文不涉及。 

2. user-mode dump files(使用者模式dump檔案),主要是應用程式及服務程式,此文所講。 

使用者模式dump檔案又分full user-mode dumps和minidumps。前者生成的是完整的記憶體快照,所以檔案比較大。後者依然生成選項,生成包含不同資訊的dump檔案。此文以minidumps檔案來分析除錯。

通過windows任務管理器,選擇指定程序,右鍵生成轉儲檔案(此時的轉儲檔案即為full user-mode dumps,包含所有資訊,所以檔案比較大)。

通過**在程式崩潰時生成dump檔案。

#include .h>

#pragma comment(lib, "dbghelp.lib")

// 此函式需要包含上面標頭檔案和引入相應的庫

long winapi exceptionfilter(exception_pointers* _pexcp)

minidump_exception_information einfo = ;

einfo.threadid = ::getcurrentthreadid();

einfo.exceptionpointers = _pexcp;

einfo.clientpointers = false;

minidumpwritedump(getcurrentprocess(),

getcurrentprocessid(),

hfile,

minidumpnormal, // 指定生成預設的minidump檔案

&einfo,

null,

null);

closehandle(hfile);

return exception_execute_handler;

}// 下面函式放在當前模組的入口函式處,指定exceptionfilter替換原生的異常處理

// 即當原本要彈出崩潰提示視窗前,需要經過此函式處理,可以處理完立即退出,也可以繼續

setunhandledexceptionfilter(exceptionfilter);

dump檔案

通常windows會提供乙個預設的崩潰提示視窗,或者是程式直接閃退。 

重寫exceptionfilter函式,即可以重新定義崩潰視窗,用以提示使用者傳送相關資訊給軟體提供商。 

SpringBoot異常處理及自定義異常頁面

springboot預設情況下對於異常的處理提供了預設的錯誤頁面,如果我們想要自定義屬於自己的異常頁面同時自己來處理不同型別的異常 到不同的頁面,可以進行相關的配置。在template目錄下建立乙個名為error的目錄,目錄名必須是error,這樣專案啟動springboot就會自動找到該目錄下的錯...

異常處理 自定義異常

異常 1.定義 執行時檢測到的錯誤。2.現象 當異常發生時,程式不會再向下執行,而轉到函式的呼叫語句。3.常見異常型別 名稱異常 nameerror 變數未定義。型別異常 typeerror 不同型別資料進行運算。索引異常 indexerror 超出索引範圍。屬性異常 attributeerror ...

自定義異常處理

自定義異常處理類 using system using system.diagnostics 日誌記錄類 using system using system.configuration using system.diagnostics using system.io using system.tex...