與此相比,動態分析是檢查那些傳遞給系統函數的關鍵變量值,以發現問題的,當方法被調用時,將會探測到某些非法參數,并上報給開發者;而使用非法參數時,某些問題不能被發現,只會在后續情況如內存崩潰、非正常程序退出等情況顯現出來。
以應用程序驗證程序開始
啟動應用程序驗證程序是一件非常簡單的事,只需選擇“調試-以應用程序驗證程序開始”即可,如圖1所示。
第一次使用應用程序驗證程序時,Visual Studio會提示你下載一個額外的DLL,此DLL將用于檢查句柄及堆,可能需要管理員權限來安裝這個補丁。
對應用程序驗證程序的大多數使用者來說,最難之處在于要記住運行這個驗證程序,而不是啟動一次標準的調試會話。假定在使用驗證程序時,也可以使用標準調試,建議啟動驗證程序會話(Shift+Alt+F5),雖然比啟動調試會話(F5)多按了兩個鍵,但還是值得的。這樣一來,就可以在每次產生調試會話時,都充分利用驗證程序了。
當應用程序驗證程序探測到一個問題時,它會停止執行流程,并顯示一個如下的對話框,如圖2所示:
通常來說,診斷此類問題一般為查看能導致驗證程序停止執行的句柄、鎖、或堆指針信息,并回溯到崩潰發生之前的執行點。然而,這不會總是最簡單的調試方法,在堆或文件崩潰是問題的唯一原因時,你不一定記得起來要啟動一個調試過程。
當驗證程序停止執行流程時,一個詳細的問題描述也會被添加到任務視圖中,如圖3所示。任務視圖中的信息便于觀看,而圖2的對話框則需要先“消失”,開發者才能進入到調試器檢查變量值。
原文轉自:http://www.anti-gravitydesign.com