一句話總結Windbg 32位版本和64位版本的選擇

whatday發表於2013-08-06
慣了Vsiual Studio的兄弟們可能會因為先入為主的原因以為所有的偵錯程式都應該像它那樣,其實不然,當你安裝Debugging Tools for Windows的時候,你將發現有兩個系列的工具,一系列32位的工具和一系列64位的工具。這讓人覺得和費解,因為在我們安裝Microsoft Visual Studio的時候你根本不需要考慮32位還是64位。

如果你正使用windbg除錯工具集(WinDbg, KD, CDB, or NTSD)中的一個,你必須得自己做出選擇。為了選擇合適的除錯工具,你需要知道以下兩點:

1. 你的除錯主機的處理器型別。

2. 你的除錯主機執行的是32位版本的windows還是64位版本的。


PS:執行偵錯程式的計算機我們成為除錯主機,被除錯的計算機我們稱為目標機。


除錯主機執行32位版本的windows

如果你的除錯主機執行的是32位版本的windows,使用32位的除錯工具(不管此時被除錯的目標機是 x86-based 還是 x64-based)。


x64-based除錯主機執行64位的windows

如果你的除錯主機使用x64-based的處理器,並且執行64位的windows,請參考如下規則:

  • 如果你在分析dump檔案,你可以使用32位或者64位的除錯工具集。(不管dump檔案是使用者態的還是核心態的,也不管這個dump檔案是在 x86-based 還是 x64-based的平臺上抓的。

  • 如果你在進行實時核心除錯,你可以使用32位或者64位的除錯工具集(不管此時被除錯的目標機是 x86-based 還是 x64-based

  • 如果你在進行實時使用者態除錯,並且偵錯程式也在同一臺機器上,對於64位的程式碼和32位的 WOW64程式碼都需要使用64位的除錯工具集。使用 .effmach命令設定偵錯程式的模式。

  • 如果你在實時除錯32位的使用者態程式碼,但是這些程式碼執行在一個單獨的目標機器上,使用32位的除錯工具集。

  •  

  • 總結

    只有在實時使用者態除錯,並且偵錯程式也在同一臺64位機器上的情況下必須用64位的除錯工具集!

相關文章