0

UMDH(x64) を使用してメモリ リークをテストしています。私のコードは FPO に最適化されておらず、カスタマイズされたアロケーターも使用していません。「new」演算子のみを使用します。

テスト中のイメージの Gflags(x64) で「ユーザー モード スタック トレース データベースの作成」が有効になっています。

非リーク ケースとリーク ケースの両方で UMDH を使用してアプリケーションを追跡し、両方のケースでログを取得しました。

ログを UMDH と比較しました。上部のコメント行から明らかなように、正しい pdb が選択されています。

問題:

コール スタックにコードのスタックが表示されません。一般的な Windows 関数名をトレースするだけです。x64 でデバッグ バージョンとリリース バージョンの両方を試しました。何か不足していますか?

得られたコードと差分トレースは次のとおりです。

// code:
#include <iostream>
using namespace std;

void myFunc()
{
   int k;
   cin >> k;
   int* ii = new int[1998];

   if (k == 0) delete[] ii;
}

int main()
{
   myFunc();
   return 0;
}


// stack trace obtained:
+     390 (   390 -     0)      1 allocs    BackTraceAC905E8D
+       1 (     1 -     0)  BackTraceAC905E8D   allocations

ntdll!RtlpCallInterceptRoutine+0000003F
ntdll!RtlpAllocateHeapInternal+0000069F
ntdll!TppWorkerThread+00000ADB
KERNEL32!BaseThreadInitThunk+00000022
ntdll!RtlUserThreadStart+00000034
.....
.....
...
4

1 に答える 1