我刚开始使用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的安装来自32位版本的"Debugging Tools for Windows“集合,我运行的是32位版本的WinXP Professional,我的软件是使用Visual Studio2008的C++。
我已经对这些警告进行了搜索,但没有找到任何有用的东西。任何帮助都将不胜感激。
发布于 2011-03-14 21:16:33
运行gflag应用程序,然后转到图像文件选项卡。输入您的进程名称并按Tab键。现在将"Stack backtrace (Megs)“中的值增加到64甚至128。据我所知,默认情况下此值为32Megs,对于多个堆栈分配,这很容易溢出。
发布于 2010-10-21 01:08:00
从描述中不清楚您是否执行了此操作,但您必须在为其设置+ust标志后重新启动该进程。
在您消除运行快照时的警告之前,比较将继续失败。
编辑:
This article表示,如果没有为ntdll.dll正确设置符号,则该工具将无法工作。你能检查一下这个吗?
使用UMDH时可能会遇到的
问题
使用UMDH时最常见的错误是因为未启用堆栈跟踪。此外,不正确的Ntdll.dll符号会阻止UMDH运行。对于其他符号文件,UMDH会运行,但日志文件包含堆栈跟踪,这些堆栈跟踪没有函数名,而是在模块中具有相对地址。第三个错误是指定了错误的PID。
发布于 2010-10-21 02:24:35
@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中遗漏了堆栈跟踪信息。我想知道在它对可执行文件的影响方面,是否有一些有限的范围?
https://stackoverflow.com/questions/3980463
复制相似问题