2017-06-01 27 views
0

私はライブユーザモードのデバッグセッションで、win32k!_W32Process構造を表示したかったのです。残念ながら、win32kはカーネルモードのSYSファイルなので、ユーザーモードセッションではシンボルは使用できません。システムを切り替えることができません

DLL、EXE、またはSYSをダンプファイルとしてロードしてから、シンボルを検査することができます。通常は、ファイル/オープンクラッシュダンプを使用して行います。

この時、私はそれは、同時に複数のシステムをデバッグすることが可能ですデバッグワークショップの参加者を見せたかったので、私はWinDbgの者のコマンドプロンプト経由でWIN32K.SYSを開く:我々として

0:003> | 
. 0 id: 10fc attach name: [...]\NetHeaps.exe 

0:003> .opendump C:\Windows\winsxs\[...]\win32k.sys 
Loading Dump File [C:\Windows\winsxs\[...]\win32k.sys] 
Opened 'C:\Windows\winsxs\[...]\win32k.sys' 

||0:0:003> 

今、私たちは2つのシステムを持っていると私は、ライブデバッグシステム上で、現在よ、見ることができます:

||0:0:003> || 
. 0 Live user mode: <Local> 
    1 Image file: C:\Windows\winsxs\[...]\win32k.sys 

私は今、他のシステムに切り替えることができると思ったが、それは動作しません:

||0:0:003> ||1s 
      ^Illegal debuggee error in '||1s' 

私はあまり心配していないだろうが、それはこの場合にはwin32kのシンボルを見つけることができません。

||0:0:003> .reload 
Reloading current modules 
........................... 
||0:0:003> dt win32k!_W32Process 
Symbol win32k!_W32Process not found. 

答えて

2

問題は、それが.opendumpコマンドでだ、||コマンドではありません。

ヘルプは言う:

あなたが.opendumpコマンドを使用した後、あなたがダンプ・ファイルを読み込む終了するグラム(移動)コマンドを使用する必要があります。

これはライブプロセスも実行することに注意してください。したがって、最初にスレッドをフリーズし(~*f)、後でアンフリーズします(~*u)。

あなたがシステムを切り替えると種類を表示することができた後:

||1:1:004> || 
    0 Live user mode: <Local> 
. 1 Image file: C:\Windows\winsxs\[...]\win32k.sys 

||1:1:004> dt _W32Process 
win32k!_W32PROCESS 
    +0x000 Process   : Ptr64 _EPROCESS 
    +0x008 RefCount   : Uint4B 
    +0x00c W32PF_Flags  : Uint4B 
[...] 
+1

うわー、それはひどいです。 – conio

関連する問題