Windows 了解UMDH警告

Windows 了解UMDH警告,windows,debugging,umdh,Windows,Debugging,Umdh,我刚开始使用UMDH,在理解如何处理它输出的一些错误时遇到了一些困难。我遵循典型用法(来自MS站点): 在另一个终端窗口中: OCES.exe umdh -p:5712 -f:out1.txt 然后返回原始终端窗口: OCES.exe umdh -p:5712 -f:out1.txt 但我从UMDH得到以下警告 Warning: Warning: UMDH didn't find any allocations that have stacks collected. Warning: U

我刚开始使用UMDH,在理解如何处理它输出的一些错误时遇到了一些困难。我遵循典型用法(来自MS站点):

在另一个终端窗口中:

OCES.exe
umdh -p:5712 -f:out1.txt
然后返回原始终端窗口:

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的安装是从32位版本的“Windows调试工具”集合中运行的,我运行的是WINXP专业的32位版本,我的软件是用Visual Studio 2008在C++中实现的。
我对这些警告进行了搜索,没有发现任何有用的信息。任何帮助都将不胜感激。

从描述中不清楚您是否这样做,但您必须在设置
+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在如何影响可执行文件方面的作用是否有限?

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

是的。gflags调用在调用OCES.exe之前。@Clifford-在
out1.txt
中是否还有其他内容?在同一终端中执行gflags时,可执行文件似乎没有给出arnings(与微软的例子相反,与我在上一台电脑上的经历相反)。但是,我在我们的主应用程序(不是OCES.exe)中得到了相同的警告,它将控制权返回到终端(OCES.exe不返回;它锁定终端)。所以我“假设”“GFLAG的影响范围可能有限。对于将控件释放回终端窗口的应用程序,是否有更好的方法来使用gflags?
gflags
应该会影响注册表。您可以使用转储当前设置的
gflags/i oces.exe
检查它是否工作。使用不带参数的
gflags
,您应该加载GUI版本,您也可以通过这种方式检查并设置EXE的标志。@Steve。我试试这个。如果它不工作,它可能是我们的主要应用程序,而不是UMDH。这是一个相当大的代码库,有许多COTS产品,因此可能有一些gflags不满意的地方。我将尝试其他一些泄漏工具,如LeakDiag和DebugDiag。史蒂夫,感谢你帮助我更好地了解UMDH。非常感谢!请参阅我的编辑。顺便说一句,如果你愿意,你可以用更多的数据编辑你自己的问题。