繁体   English   中英

了解UMDH警告

[英]Understanding UMDH Warnings

我是使用UMDH的新手,但在理解如何处理其输出的一些错误时遇到了一些麻烦。 我遵循典型用法(来自MS网站):

gflags -i OCES.exe +ust

在另一个终端窗口中:

OCES.exe

然后回到原始终端窗口:

umdh -p:5712 -f:out1.txt

但是我从UMDH收到以下警告

Warning:
Warning: UMDH didn't find any allocations that have stacks collected.
Warning: Use gflags to enable allocation stack collection.
Warning: Restart the application for the setting to be in effect.
Warning: A 32bit GFLAGS must be used. The command is:
Warning: gflags -i OCES.exe +ust
Warning:

当我第二次调用UMDH时,遇到相同的错误,并且当我使用UMDH区分两个快照时,我没有得到任何有用的输出(没有堆栈或回溯)。 我在另一台计算机上使用了UMDH,但没有遇到这些相同的问题(该计算机不再可用)。

UMDH的安装来自“ Windows调试工具”集合的32位版本,我正在运行32位版本的WinXP Professional,并且我的软件是使用Visual Studio 2008的C ++。

我已经搜索了这些警告,但没有发现任何有用的信息。 任何帮助将非常感激。

运行gflags应用程序,然后转到“图像文件”选项卡。 输入您的进程名称,然后按Tab。 现在,将“堆栈回溯(Megs)”中的值增加到例如64或什至128。据我所知,默认情况下该值为32Megs,对于多个堆栈分配,此值很容易超限。

从描述中还​​不清楚您是否执行了此操作,但是您必须在为其设置+ust标志后重新启动该过程。

在摆脱快照运行时的警告之前,比较将继续失败。

编辑:

本文指出,如果没有为ntdll.dll正确设置符号,则该工具将无法使用。 你能检查一下吗?

使用UMDH时可能遇到的问题

使用UMDH时,会发生最常见的错误,因为未启用堆栈跟踪。 此外,Ntdll.dll的不正确符号也会阻止UMDH运行。 对于其他符号文件,UMDH会运行,但日志文件包含堆栈跟踪,这些跟踪不具有函数名称,而在模块内部具有相对地址。 遥远的第三个错误指定了错误的PID。

@Steve-我将主题从OCES.exe(我们的网络引擎)略微移到了我们的主应用程序中,但是我收到了相同的警告(请参见上面的内容,以获取主主应用程序的详细信息。其代码库与OCES.exe,它仅添加其他代码)。 out1.txt有如下输出:

22 bytes + 1E at 151EA0 by BackTrace0
28 bytes + 18 at 151EE0 by BackTrace0
2D8 bytes + 18 at 151F20 by BackTrace0
314 bytes + 1C at 152210 by BackTrace0
314 bytes + 1C at 152540 by BackTrace0

这与我以前的计算机上收到的一些输出稍有不同:

C0 bytes + 18 at 154B88 by BackTraceB
    7C96EED2
    7C94B394
    7C918F21
    7C91F661
    7C91F225
    7C91EF58
    7C91ED13
    7C915BAA
    7C91D129

所以我假设我缺少out1.txt中的堆栈跟踪信息。 我想知道gflags在影响可执行文件方面是否有有限的范围?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM