2016-07-11 14 views
0

DLLのクラッシュをデバッグしようとしています。サーバーマネージャーに読み込まれ、Active Directory証明書サービスを構成しようとするとクラッシュします(DLLは登録済みプロバイダーです)。クラッシュがアクセス違反で、私がpdbファイルを持っていることを知っています。これをデバッグする方法を知りません。私はthisthisのようなページを読んだ(助けにはならなかった)。私は8000000のように見えるロードされたアドレスを、取得するためにLMを使用して(windbgのを使用して情報を収集しようとした:DLLのデバッグクラッシュ

"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe" -z myKSP.dll 

その後

0:000> lm 
start    end     module name 
00000001`80000000 00000001`8005e000 ... 

その後、イベントビューアは私に語ったことから:

Exception code: 0xc0000005 
Fault offset: 0x000000000002a601 

私はそれを表示しようとした:

0:000> ln 80000000+2a601 
Browse module 
Set bu breakpoint 

何も表示されません。

私はVS2015を持っていますので、私はserververmanager.exeプロセスにアタッチしようとしました。次に、Tools-> Options-> Debugging-> Symbolsでシンボルを読み込み、パスを指定しようとしましたが、ブレークポイントを設定すると常にシンボルがロードされません。以前のシンボルウィンドウでは、たくさんのものをダウンロードしたキャッシュフォルダを設定しましたが、何もロードされていないようです。

明らかに、ツールを正しく使用していません。 DLLをデバッグする方法、リリースモードでコンパイルする方法、PDBを使用する方法、ServerManager.exeでロードする方法、または生成するサブプロセスをロードする方法)

+0

Visual Studioを添付して、Win32例外がスローされたときに破損するように設定します。デバッガがプロセスを一時停止すると、後でシンボルを扱うことができます。 – IInspectable

+0

処理が中断しました...今はどうしたらいいですか?まだシンボルを読み込まない、私は "モジュール"ウィンドウと表示されているスタックトレースを持っていないようだ、私のDLLの近くにどこにもありません。 – Jon

+0

Windowsに実行ファイルのクラッシュダンプファイルを作成し、クラッシュするまで実行してからwindbg.exeを使用してファイルを開くように要求することができます。 – alexm

答えて

0

windbgを起動し、Ctrl-Dを押してダンプファイルを開き、次のように入力します。これは、kp500の後に重大なスタックを与えるか、少なくともpdbファイルがバイナリと一致しないかどうかを知らせるものです。

.symfix 
.sympath+ <FOLDER_WITH_YOUR_PDB> 
.reload 
!sym noisy 
.reload /v /f myKSP.dll 
!sym quiet 
kp500 
.ecxr 
kp500