2011-11-10 7 views

答えて

2

環境変数を見ることができます。コマンド!pebの出力には、とりわけ、環境変数のリストが含まれています。変数PROCESSOR_ARCHITEW6432またはProgramW6432が定義されている場合、OSは64ビットです。それ以外の場合は32ビットです。

+0

私が実行すると!pebコマンドが私にPEB NULLを与えます...これはどういう意味ですか? –

+0

ダンプにプロセス環境ブロック(PEB)が含まれていないことを意味します。 PEBは、デバッガで '.dump/mp 'や' .dump/ma'や '.dump/mf'コマンドを使うとき、またはADPlus(http://support.microsoft.com/kb/q286350)を使うときに追加されます。 –

2

Windowsのデバッグツールに付属のdumpchk.exeユーティリティを使用できます。ダンプファイルを引数として渡すだけです。生成されたレポートで

、あなたは例えば、OSのバージョンやCPUの風味を持っていますが:

Windows 7のバージョン7601(サービスパック1)UP無料のx64

製品: WinNt、スイート:SingleUserTS

+0

* x64が表示されている場合は、x64 OSで撮影されていなければなりませんが、それとは逆のことが当てはまります。 x64システムで実行される32ビットダンプには、x86が表示されます。 –

1

残念ながら、上記の回答はほとんどの場合うまくいきません。

ターゲットプロセスがx86バイナリとしてビルドされている場合、Dupmchk.exeはx86とx64の両方で "x86互換"と表示されます。そして!!pebコマンドは、ほとんどの場合に使用するミニダンプのために、無駄な "PEB NULL ..."を与えます。

x64 OSが "C:\ Windows \ Syswow64 \ Kernel32.dll"の代わりにをロードするので、代わりに "Kernel32.dll"のフルパスを確認することをお勧めします。 System32 \ Kernel32.dll "を実行します。ロードされたモジュールとそのパスはミニダンプで記録され、dumpchk.exe、windbg、およびVisual Studioで簡単に確認できます。

+0

一部の顧客はプライバシー上の理由からパスを削除したいので、 '.dump/marR'を使用します。 –

+0

これは有効な戦略だとも考えました。それはWindows XPで私のために働いた - Windows 7 ...しかし、Windows 8は物事を変更し、SysWOW64のパスをSystem32にのみmunges。 *私のすべての顧客がWindows 8 +の32ビットバージョンを実行していたのは奇妙だと思った... – Mark

2

.effmachコマンドを使用して、ダンプが作成されたアーキテクチャを知ることができます。ダンプアーチがx64であるWOW64シナリオがありますが、実際にはx86アプローチでデバッグする必要があります(!wow64exts.swコマンドを参照)。

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

+1

'.effmach'はダンプのビット数を調べるために使用できません。これは、デバッグに使用されている現在のビット数を調べるためにのみ使用できます。 64ビットのダンプで '!sw'を実行し、' .effmach'を実行すると正しい結果が表示されなくなります。 –

+1

あなたは正しいですが、WOWのダンプを実行してから!swコマンドの前に.effmachコマンドを実行すると、著者の質問に答えた正確なビット数が返されます。さらに、あなたが今まで私たちに従ってきたなら、あなたはダンプのビットを知っているでしょう;) – Shleimeleh

関連する問題