3

リークを追跡するためにいくつかのユーザー モード メモリ ダンプを分析しており、リークの候補がいくつかありますが、!heap -flt s xx コマンドを実行すると、ダンプにこれらのエントリが表示され続けます。 .

    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

2 に答える 2

4

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

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

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

于 2012-04-23T14:53:48.980 に答える
3

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

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

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

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

于 2012-04-23T14:59:05.797 に答える