首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UMDH不提供调用堆栈

UMDH不提供调用堆栈
EN

Stack Overflow用户
提问于 2016-10-25 05:16:48
回答 1查看 834关注 0票数 0

我使用UMDH(x64)测试内存泄漏。我的代码既不是优化的FPO,也不是使用定制的分配器。它只使用“新”操作符。

“创建用户模式堆栈跟踪数据库”是在正在测试的图像的标志(X64)中启用的。

我使用UMDH跟踪了我的应用程序,无论是在非泄漏情况下还是在泄漏情况下,我都获得了这两种情况下的日志。

并将日志与UMDH进行了比较。它选择了正确的pdb,从顶部的评论行中可以看出这一点。

问题:

调用堆栈没有显示我的代码堆栈。它只跟踪一般的windows函数名。我在x64中尝试过调试和发布版本。我是不是遗漏了什么?

获得的代码和差异跟踪如下:

代码语言:javascript
复制
// 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
.....
.....
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-21 18:53:02

正如在使用UMDH查找用户模式内存泄漏(MSDN)中所描述的,在使用UMDH之前,您需要定义环境变量_NT_SYMBOL_PATH

如果您从命令行运行它,请使用

代码语言:javascript
复制
set _NT_SYMBOL_PATH=c:\mysymbols;srv*c:\mycache*https://msdl.microsoft.com/download/symbols 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40231877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档