2010-10-20 127 views
0

我是新来使用UMDH,和我有一些麻烦了解如何与一些它输出的错误进行。我按照典型的使用(从MS网站):了解UMDH警告

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调试工具”集合,我正在运行的WinXP专业版的32位版本,32位版本和我的软件是在C++中使用Visual Studio 2008

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

+0

看样子执行GFLAGS在同终端作为可执行似乎没有给警告(相反,从MS的例子,我经历了我以前的计算机上),但是,我得到同样的警告与我们主要的应用程序(不OCES.exe),返回控制终端(OCES.exe没有;它锁定端子)。因此,我“假设”,其影响GFLAGS可能有有限的范围内是否有更好的方式来处理GFLAGS一个应用程序所释放的控制回用法终端窗口? – 2010-10-20 18:01:05

+0

'gflags'应该影响注册表。您可以检查是否它能使用'GFLAGS /我oces.exe'的转储的当前设置。使用'gflags'没有PARAMS和你建议立即进行删除d加载GUI版本,您可以检查并设置您的EXE标志。 – 2010-10-20 18:10:49

+0

@Steve。我会试试这个。如果它不起作用,它可能是我们的主要应用程序,而不是UMDH。这是一个相当大的COTS产品代码库,所以可能会有gflags不满意的地方。我将尝试一些其他泄漏工具,如LeakDiag和DebugDiag。感谢您帮助我们更好地了解UMDH,史蒂夫。非常感激! – 2010-10-20 21:08:05

回答

0

这不是从你做的是否描述清楚,但你必须设置+ust标志之后重新启动该进程。

的比较,将继续失败,直到你摆脱对快照运行的警告。

编辑:

This article表示如果符号不正确地设置ntdll.dll中,该工具将无法正常工作。你能检查一下吗?

的问题,当您使用 UMDH,您可以体验当 您使用UMDH

最常见的错误发生,因为堆栈跟踪未启用 。另外,对于Ntdll.dll,不正确的符号 会阻止运行来自 的UMDH。对于其他符号文件,UMDH 运行,但在日志文件包含不具有功能 的名字,而是有内部模块相对 地址 堆栈跟踪。遥远的 第三个错误是指定一个错误的PID。

+0

是的。 gflags调用在调用OCES.exe之前。 – 2010-10-20 17:16:15

+0

@Clifford - 还有什么在'out1.txt'? – 2010-10-20 17:40:43

0

@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是否会影响可执行文件的范围有限?

+0

看我的编辑。顺便说一句 - 如果你愿意,你可以用更多的数据编辑自己的问题。 – 2010-10-20 20:52:38

1

运行GFLAGS应用到图像文件选项卡。输入您的流程名称并按Tab键。现在增加“堆栈跟踪(兆)的值,例如64,甚至128默认情况下,这个值是32Megs据我所知,并为多个堆栈分配这可以很容易超支。