2011-08-04 8 views
4

WinDbgデバッグ用.NETアプリケーションをC++アンマネージメモリ割り当てで使用しようとしています。WinDbg!ヒープコマンドがシンボルの欠落により動作しない

私はヒープコマンドを実行しようとすると、私は次のエラーメッセージが表示されます:!

0:022> !heap 
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\system32\KERNEL32.dll - 
************************************************************************* 
***                 *** 
***                 *** 
*** Your debugger is not using the correct symbols     *** 
***                 *** 
*** In order for this command to work properly, your symbol path *** 
*** must point to .pdb files that have full type information.  *** 
***                 *** 
*** Certain .pdb files (such as the public OS symbols) do not  *** 
*** contain the required information. Contact the group that  *** 
*** provided you with these symbols if you need this command to *** 
*** work.               *** 
***                 *** 
*** Type referenced: ntdll!_HEAP_ENTRY        *** 
***                 *** 
************************************************************************* 
Invalid type information 

は、どのように私はこのエラーを修正することができますか?

答えて

3

シンボルサーバーを設定します。手順は次のとおりです。

  1. ダウンロードされたシンボルのローカルディレクトリを作成します。私は "C:\ Symbols"を使用します。
  2. 「ファイル」メニューから「シンボルファイルパス...」を選択します。
  3. "SRV * C:\ Symbols * http://msdl.microsoft.com/download/symbols"と入力して[OK]を押します。
  4. もう一度お試しください。当初、シンボルがダウンロードされている間に遅延が発生します。将来、ローカルコピー(ステップ1)が使用されます。

詳細については、hereを参照してください。

5

は、あなたのシンボルパスを修正するには、次のコマンドを使用します。

.symfix 
.reload 
1

あなたはあなたのアプリケーションのためのシンボルを設定しても、それは窓のシンボルサーバーを指すようにする必要があります。 Windowsのシンボルサーバーでは、Steveが言うことを実行できます。

"SRVの*のC:\記号*のhttp://msdl.microsoft.com/download/symbols"!その後

を、設定は冗長モードでシンボルのロードを行いますどのうるさいSYM。

.reloadを実行すると、必要なシンボルが見つかるが見つかりません。

アプリケーションのpdbsの場所が分かっている場合は、シンボルパスにそのパスをポイントして、上記の手順を繰り返して、必要なシンボルがすべて揃っていることを確認します。

+1

!heapコマンドが機能しないという問題は、デバッガがアプリケーションではなくWindows自体のシンボルを必要とすることです。この場合、ntdll.dllのシンボル。 – Steve

関連する問題