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

VC++ 除錯利器 TRACE 宏完整解析:格式化輸出、版本控制與變體用法

     編輯:VC 教學

TRACE 宏特性

  • 僅在 Debug 版本 有效,Release 版本經預處理器移除,零額外開銷。
  • 語法類 printf,支援格式化字串。
  • 輸出至 Visual Studio **輸出視窗** (Output Window) 的 Debug 分頁。
  • 需在 IDE 中執行 Debug 版本程式才能看見輸出。

基本用法


TRACE(_T("簡單訊息\n"));
TRACE(_T("整數: %d, 字串: %s\n"), 123, _T("Hello"));
TRACE(_T("指標: 0x%08X\n"), pPtr);

固定參數變體 (效能略優)

宏參數數範例
TRACE00TRACE0("進入函數\n");
TRACE11TRACE1("錯誤碼: %d\n", err);
TRACE22TRACE2("座標: (%d, %d)\n", x, y);
TRACE33TRACE3("RGB: %d, %d, %d\n", r, g, b);

原理:避免 va_list 可變參數處理開銷,Debug 版本展開為直接呼叫 _AFX_TRACE。

進階技巧

  • 條件式追蹤:#ifdef _DEBUG TRACE(...); #endif (雖然 TRACE 本身已處理,但可用於自訂宏)。
  • 檔案/行號資訊:MFC 內部已自動附加 __FILE__, __LINE__。
  • 自訂追蹤類別:衍生 CtraceContext 導向檔案、Syslog、資料庫。
  • TRACE 關閉:afxTraceEnabled = FALSE 全域停用。

注意事項

  • 格式化字串必須為常數字面值 (字串字面值),不可使用變數指標,否則 Release 版可能殘留字串常數。
  • 大量 TRACE 會降低 Debug 執行速度,關鍵路徑建議改用斷點或 OutputDebugString。
  • Unicode 專案使用 _T() 或 L"" 確保字串型別正確。

對比:OutputDebugString


OutputDebugString(_T("直接呼叫 API\n"));
// 優點:Release 版也可保留 (若需)、無格式化解析開銷
// 缺點:無自動檔案/行號、無格式化支援
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved