2011-11-10 92 views

回答

2

你可以看看環境變量。除其他外,命令!peb的輸出包含環境變量列表。如果您看到定義的變量PROCESSOR_ARCHITEW6432ProgramW6432,則OS是64位。否則,它是32位。

+0

當我運行!peb命令它給了我PEB NULL ...任何想法是什麼意思? –

+0

這意味着轉儲不包含進程環境塊(PEB)。在調試器中使用'.dump/mp'或'.dump/ma'或'.dump/mf'命令時,PEB被添加,或者您使用ADPlus(http://support.microsoft.com/kb/q286350)。 –

2

您可以使用Windows調試工具附帶的dumpchk.exe實用程序。只需傳遞轉儲文件作爲參數。

在生成的報告中,您將有操作系統版本和CPU的味道,例如:

的Windows 7版本7601版(Service Pack 1)UP免費

產品: WinNt,suite:SingleUserTS

+0

*如果*顯示x64,則它必須在x64操作系統上執行,但反之不然。在x64系統上進行的32位轉儲將顯示x86。 –

1

不幸的是,以上答案在大多數情況下不起作用。

如果目標進程構建爲x86二進制文件,則Dupmchk.exe將對x86和x64操作系統說「x86兼容」。並且!peb命令也會爲您提供毫無用處的「PEB NULL ...」,這是我們大多數時間使用的小型轉儲程序。

你最好檢查 「的Kernel32.dll」 的完整路徑,因爲x64操作系統將加載「C:\ WINDOWS \ SYSWOW64 \ Kernel32.dll中」而不是同時的x86操作系統加載簡單的「C:\ WINDOWS \ System32 \ Kernel32.dll「用於x86可執行文件。加載的模塊和它們的路徑在minidump中被重新記錄,並且可以通過dumpchk.exe,windbg和Visual Studio輕鬆檢查。

+0

某些客戶爲了保護隱私需要刪除路徑,因此使用'.dump/marR'。 –

+0

我也認爲這是一個有效的策略。它在Windows XP --Windows 7上適用於我...但是,Windows 8改變了一切,只將SysWOW64路徑傳送到System32。我認爲這很奇怪,所有*我的客戶都在運行32位版本的Windows 8 + ... – Mark

2

您可以使用.effmach命令來了解創建轉儲的體系結構。請注意,WOW64場景中的轉儲拱門是x64,但實際上應該使用x86方法進行調試(請參閱!wow64exts.sw命令)。

0:000> .effmach Effective machine: x64 (AMD64)

+1

'.effmach'不能用於查找轉儲的位數。它只能用於找出用於調試的當前位數。試試64位轉儲的'!sw',然後'.effmach',它將不再顯示正確的結果。 –

+1

你是對的,但如果你正在運行一個WOW'd轉儲,那麼在!sw命令之前,.effmach命令將返回回答作者問題的正確位數。而且,如果你一直跟着我們,那麼你肯定知道垃圾場的位置;) – Shleimeleh

相關問題