导致UMDH无法提供堆栈跟踪的原因

时间:2009-02-05 23:17:46

标签: visual-studio-2005 umdh

我以前曾经使用过UMDH十几次,从来没有遇到任何问题。

突然间,我的转储文件中的堆栈跟踪中没有函数名称 - 只是一系列地址。

我已经启用了:

gflags exe_name + ust

我启动exe_name,然后我做

umdh -p:pid one.txt umdh -p:pid two.txt

我看一下.txt和two.txt,他们没有迹象表明这些来自哪里。当我做差异

umdh one.txt two.txt> diff.txt

结果没用。

帮助,我喜欢这个工具。

3 个答案:

答案 0 :(得分:3)

执行命令时,UMDH执行PDB关联:

umdh -d one.txt two.txt -f:outputfile.txt

最初拍摄快照时不是。你必须让它为你做差异!

而且,是的......你需要正确设置你的符号路径。

答案 1 :(得分:2)

UMDH开关语法在最新版本的debugging-tools-for-windows中略有改变。也许这就是问题所在。请尝试以下方法 -

umdh -p:pid ** - f:** one.txt

umdh -p:pid ** - f:** two.txt

umdh -v -l <​​/ strong> one.txt two.txt&gt; diff.txt

( - l是一个新的开关,从PDB中提取文件和行号)。 同样,请确保_NT_SYMBOL_PATH环境变量包含您的 PDB的路径。

文档现在也可用online

(编辑:)比较中的关键开关-v现在存在......

(编辑:)您没有指定您的操作环境。 It is well known在VC8上,CRT的malloc是用FPO编译的 - UMDH无法克服。 同样known(参见Pavel Lebedinsky的评论)UMDH无法处理某些分配器类型,例如: SysAllocString。如果您确实使用了一些异国情调的分配器,您可能需要尝试LeakDiag - 它会处理更多的分配器。

答案 2 :(得分:0)

可执行地址和函数名之间的映射在PDB中定义。

确保您的符号路径设置正确,
特别是如果你在与编译代码的机器不同的机器上运行UMDH。