我以前曾经使用过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
结果没用。
帮助,我喜欢这个工具。
答案 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。