2017-08-01 8 views
0

これはうんざりです。カーネルモジュールで問題が発生したのは、50-100回の再起動ごとに1回しか発生しません。私は中断したいwindbgの行を持っています。問題が発生していないことを検出するたびに再起動します再起動して次回に障害が発生したかどうかを確認することができます。再接続時にwindbg forceロードシンボルを作成するにはどうすればよいですか?

問題は、問題が発生することがわかるブートアッププロセスでブレークポイントでwindbgを停止したいということです。 しかし、テストマシンがリブートすると、windbgは(マシンがなくなると)ディスコネクトされ、ウィンドウが起動すると再び接続されます。私のワークスペースはロードされますが、シンボルがロードされていないようで、ブレークポイントを見落としてしまいます。

「サイクル初期ブレーク」をオンにすると、windbgが接続されるとすぐにブレークしてシンボルが読み込まれ、f5キーを押し続けてブレークポイントがヒットすると停止します。 しかし、これを自動化することがポイントです。テストマシンがリブートするたびに、そこに座ってf5を押す必要はありません。

まだ停止していなくても、接続時にwindbgにシンボルを強制的に読み込ませる方法はありますか?

答えて

1

はい、スクリプトファイルを作成し、kdを起動するときにファイル名を指定するために "-cfr"パラメータを使用できます。デバッガが起動されたときと、ターゲットが再起動するときのスクリプトファイル。

スクリプトファイルでは、.reloadコマンドを入力するだけでよいはずです。マイクロソフトから

ドキュメント:

デバッガスクリプトファイル:(ファイル名のCFRパラメータ) https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/using-script-files

KDコマンドラインオプション https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/kd-command-line-options

1

使用

sxe -c ".reload /f;g" ibp ; .reboot 

このコマンドは、壊れたときに最初のブレークを要求しますそれがすべてありますので、私は」、あなたもここにコマンドとしてブレークポイントを設定することができます行くと、それは私の既存のブレークポイントは、ワークスペースのリロードで引っ張られます。この

kd> sxe -c ".reload /f;bp nt!IopInitializeBootDrivers;g" ibp ; .reboot 

Shutdown occurred at (Wed Aug 2 13:14:49.008 2017 (UTC + 5:30))...unloading all symbol tables. 

Waiting to reconnect... 
Connected to Windows XP 2600 x86 compatible target at (Wed Aug 2 13:15:08.627 2017 (UTC + 5:30)), ptr64 FALSE 
Kernel Debugger connection established. (Initial Breakpoint requested) 


Loading Kernel Symbols 

* does, press "g" and "Enter" again.           * 
*                    * 
******************************************************************************* 


Breakpoint 0 hit 
nt!IopInitializeBootDrivers: 
806aa839 8bff   mov  edi,edi 

kd> k 
# ChildEBP RetAddr 
00 fc8d3694 806a06df nt!IopInitializeBootDrivers 
01 fc8d383c 806a1a6c nt!IoInitSystem+0x712 
02 fc8d3dac 8057aeff nt!Phase1Initialization+0x9b5 
03 fc8d3ddc 804f88ea nt!PspSystemThreadStartup+0x34 
04 00000000 00000000 nt!KiThreadStartup+0x16 
+0

のように作用することになるシンボル をロードして発行私が手動で壊れたときに.reload/fを実行すると、すべてが計画どおりに行われるため、問題を引き起こしているシンボルが読み込まれていないことがわかります。ヒントをありがとう。私はwindbgには新しく、sxeについては知らなかった。 – stu

関連する問題