首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

C++ 異常捕獲與日誌記錄類 CExceptionLogger

     編輯:關於VC++

簡介

CExceptionLogger 可免費用於商業/開源項目,源自 MSDN Magazine 2002 年 3 月 Matt Pietrek 的文章《Improved Error Reporting with DBGHELP 5.1》。能捕獲未處理異常(非法訪問、棧溢出、除零等),生成詳細日誌。

日誌記錄內容

  • 異常發生日期時間、異常代碼
  • 非法訪問的線性地址、段、偏移、模塊路徑
  • 進程完整路徑、工作目錄、命令行、進程/線程 ID
  • 所有線程信息(ID、優先級、創建時間、Kernel/User Time)
  • 所有模塊信息(名稱、路徑、引用計數、句柄、大小、完整符號表)
  • 所有 x86 寄存器值
  • 調用棧(段、偏移、模塊、函數、行號)
  • 每棧幀的所有變量/參數:基本類型、用戶定義類型(結構/聯合/類),含名稱、地址、類型、值,數組完整展開

版權與使用條件

  • 可包含於任何二進制發布產品
  • 保留各模塊頂部版權聲明前提下可任意修改
  • 分發源碼僅限作者最新版本

編譯與部署要求

  1. 需安裝 2002 年 11 月後 Platform SDK
  2. 直接添加 ExceptHandler.cpp/h 或編譯為 DLL 動態加載
  3. 客戶機必須部署 DBGHELP 5.1 DLL(放置於應用程序同目錄)
  4. Release 模式需啟用調試信息生成 PDB,並分發 PDB 文件
  5. 優化選項建議設為「Disable (Debug)」以獲得有意義棧回溯

日誌體積說明

單次日誌可能超過 100KB,作者觀點:磁盤空間廉價,開發者排錯時間寶貴。

改進計劃

  • 可配置日誌文件名
  • 支援 Win64 平台
  • 支援非 x86 棧回溯

參考資料:Bugslayer (MSJ 1998)、Under the Hood (MSDN 2002)。完整源碼隨文提供。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved