2012-04-23 1 views
3

私はいくつかのユーザーモードのメモリダンプを分析して、リークを追跡しようとしています。私は何が漏れているのかについていくつかのCanidateを持っていますが、 !heap -flt s xxコマンドを実行すると、これらのエントリは私のダンプにあります。何がありますか? XXX!yyyyyyyyyy + zzz mean in the heap -flt s output

14a8bd58 0006 0006 [07] 14a8bd60 00018 - (busy) 
    14a8bd88 0006 0006 [07] 14a8bd90 00018 - (busy) 
    14a8bdf8 0006 0006 [07] 14a8be00 00018 - (busy) 
    14a8bf48 0006 0006 [07] 14a8bf50 00018 - (busy) 
     ? SomeModule!SomeFunction+1bdf4 

は私が

14a8bd58 0006 0006 [07] 14a8bd60 00018 - (busy) 

ラインが何であるかを取得するが、私は本当にライン

 ? SomeModule!SomeFunction+1bdf4 

が本当に何を意味するかわかりません。これらのダンプは、ヒープトレースの+ ustフラグを使用して取得されました。

答えて

4

これらは、読者がソースの対応する部分をより便利に見つけるために記号情報を提供しているだけです。

Windowsでは、プロセスの仮想アドレス空間には一連のモジュールが設定されます。各モジュールは、ベースアドレスとサイズで構成されています。したがって、この情報が表示される別の方法はModule + Relative Offsetです。

モジュールには、関数を含めることができます。シンボルテーブルが損なわれていない場合、これらの関数の相対的なオフセット(モジュールへの)とサイズを見つけることができます。ダンプは、この情報を人間が読める形式で表示するだけです。

3

SomeModuleは、実行可能モジュールの名前です。

SomeFunctionは、実行中のモジュールからエクスポートされた関数の名前です。

+1bdf4は、その関数の先頭からのオフセットです(16進数)。

この例ではオフセット値が非常に大きいため、モジュールのシンボルテーブルが欠落していて、既知の名前を持つ最も近い機能(通常はエクスポートされたもの)に関連してオフセットが表示される可能性があります。

+0

モジュールは、EXE(DLLではなく)のモジュールでもあります。 –

+0

ありがとう、私はそれを修正します。 – Andrey

関連する問題