對於 C/C++ 原生碼開發者而言,Visual Studio Team System (VSTS) 不僅涵蓋了整個軟體開發週期,更提供了強大的靜態程式碼分析與單元測試功能。透過原始碼標註,開發者可在方法參數前後設定前置與後置條件,編譯器將自動偵測違規情況並發出警告。本文將深入探討 VSTS 中的「應用程式驗證工具」——一個專門監控非受控碼執行行為的動態分析工具,能有效發現記憶體配置錯誤、控制代碼洩漏等難以靜態偵測的問題。
與靜態分析不同,動態分析著重於檢查傳遞給系統函式的關鍵變數值。當方法被呼叫時,驗證工具會即時探測非法參數並回報給開發者;某些問題若不透過執行期監控,往往只會在稍後導致記憶體崩潰或程式異常終止時才浮現,屆時除錯難度大增。
啟動方式相當直觀:在選單中選擇「偵錯」→「以應用程式驗證工具啟動」(快捷鍵 Shift+Alt+F5),如圖 1 所示。

圖 1:啟動應用程式驗證工具
首次使用時,Visual Studio 會提示下載額外的 DLL(用於檢查控制代碼與堆疊),可能需要系統管理員權限安裝。建議養成習慣,預設使用驗證工具啟動偵錯會話,雖然多按兩個鍵,但能確保每次偵錯都受到完整保護。
當驗證工具捕捉到錯誤,會立即暫停執行並彈出對話框顯示錯誤詳情(圖 2)。同時,詳細的問題描述會被加入「工作清單」視圖(圖 3),方便開發者檢視而不必先關閉對話框。

圖 2:驗證工具停止資訊

圖 3:驗證工具工作清單視圖
此外,「驗證工具視窗」(圖 4)提供了最完整的停止事件資訊,包含導致錯誤的控制代碼、鎖定物件或堆疊指標等關鍵數據,協助開發者快速回溯至崩潰發生前的執行點。

圖 4:驗證工具視窗
VSTS 應用程式驗證工具專注於三大核心領域:
DLLMain 中的等待操作(有效預防死結)。驗證工具的配置介面簡潔(圖 5),可獨立啟用/停用上述三類檢查。對於堆疊驗證,更可搭配「防護頁」使用,並指定防護頁位置:預設置於配置區域末尾以偵測緩衝區溢位;若需偵測罕見的緩衝區下溢,可將其移至區塊起始處。

圖 5:驗證工具配置
應用程式驗證工具是 VSTS 中最易上手且實用的工具之一,只需一鍵啟動即可讓它協助追蹤那些棘手的原生碼問題,大幅提升除錯效率與程式碼品質。