簡體   English   中英

UMDH不提供呼叫堆棧

[英]UMDH not giving call stack

我正在使用UMDH(x64)測試內存泄漏。 我的代碼既沒有經過FPO優化,也沒有使用自定義的分配器。 它僅使用“新”運算符。

在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
.....
.....
...

使用UMDH查找用戶模式內存泄漏(MSDN)中所述 ,需要在使用UMDH之前定義環境變量_NT_SYMBOL_PATH

如果從命令行運行,請使用

set _NT_SYMBOL_PATH=c:\mysymbols;srv*c:\mycache*https://msdl.microsoft.com/download/symbols 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM