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

《VC++ 技術內幕》學習筆記(四):資源檔與建置模式——Debug/Release 差異、診斷宏與調試技巧

     編輯:VC 教學

資源檔 (.rc) 內容

資源檔決定應用程式使用者介面,包含:

  • Accelerator:快速鍵對應表
  • Dialog:對話框版面與控制項
  • Icon:16×16、32×32 兩種尺寸
  • Menu:主選單與彈出選單
  • String Table:字串資源(非原始碼)
  • Toolbar:工具列按鈕影像與 ID
  • Version:版本資訊、語言、描述

.rc 內含 #include "afxres.h"、#include "afxres.rc" 引入 MFC 通用資源。

資源編輯器最佳實踐

  • 優先使用**資源編輯器**視覺化編輯,修改自動同步 resource.h。
  • 避免直接用文字編輯器修改 resource.h 或 .rc,下次開啟資源編輯器時可能遺失變更。
  • 新增資源後,對應 ID 自動加入 resource.h,無需手動維護。

建置模式:Debug vs Release

開發流程建議

  1. 開發階段:使用 Debug 模式,利用斷點、單步執行、變數監看、呼叫堆疊。
  2. 測試階段:切換 Release 模式測試效能、記憶體洩漏、優化後行為差異。
  3. 發佈階段:Release 版本發布給使用者。

診斷宏實戰

// 常用宏
TRACE(_T("目前索引 = %d, 名稱 = %s\n"), i, name);  // 輸出至 Debug 視窗
ASSERT(ptr != NULL);                                // 條件為假中斷 (僅 Debug)
VERIFY(::SetEvent(hEvent));                         // Release 仍執行運算式,Debug 同 ASSERT
ASSERT_VALID(pDoc);                                 // 檢查物件有效性 (CObject::AssertValid)

// 自訂診斷
#ifdef _DEBUG
    #define MY_TRACE TRACE
#else
    #define MY_TRACE __noop
#endif

調試工具箱

  • 斷點:條件斷點、命中計數、資料斷點 (資料變更中斷)。
  • 單步執行:F10 逐過、F11 逐入、Shift+F11 跳出。
  • 監看視窗:變數值、運算式、記憶體位址。
  • 呼叫堆疊:追蹤函數呼叫鏈。
  • Spy++:獨立工具,檢視視窗結構、訊息流程、進程/執行緒。
  • Dependency Walker:分析 DLL 相依性、匯入/匯出函數。

常見編譯錯誤應對

  • 網路/書本代碼貼上後大量錯誤:逐個解決,善用「輸出視窗」雙擊跳轉錯誤行。
  • 標頭檔缺漏:#include <afxwin.h> 等 MFC 核心頭檔。
  • Unicode/ANSI 不匹配:專案屬性 → 字元集 設定一致。
  • 庫版本衝突:Debug/Release 混用、MFC 靜態/動態連結不一致。

熟練掌握資源管理、建置模式切換與診斷宏,配合 Visual Studio 強大調試器,能將開發效率提升數倍,快速定位並解決疑難雜症。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性Debug BuildRelease Build
偵錯資訊完整 (PDB)無
MFC 庫MFCxxD.dll (診斷版)MFCxx.dll (零售版)
執行期庫libcmtD.lib / msvcrtd.liblibcmt.lib / msvcrt.lib
優化關閉 (/Od)開啟 (/O2 速度 / /Os 大小)
斷言/診斷宏啟用 (ASSERT, TRACE, VERIFY)自動移除
輸出目錄專案目錄\Debug\專案目錄\Release\