用慣了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位的調試工具(不管此時被調試的目標機是 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位的調試工具集!