3

我以前用过 UMDH 十几次,从来没有任何问题。

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

我已经启用了 ust:

gflags exe_name +ust

我启动 exe_name,然后我做

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

我查看了 one.txt 和 two.txt ,但没有任何迹象表明它们来自哪里。当我做差异时

umdh one.txt two.txt > diff.txt

结果没有用。

帮助,我喜欢这个工具。

4

3 回答 3

3

当您执行以下命令时,UMDH 会执行 PDB 关联:

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

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

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

于 2009-04-13T19:50:15.783 回答
2

UMDH 开关语法在调试工具的最新版本中的某个地方略有改变。也许这就是问题所在。尝试以下 -

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

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

umdh -v -l one.txt two.txt > diff.txt

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

文档现在也可以在线获得。

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

(编辑:)您没有指定您的操作环境。众所周知,在 VC8上,CRT 的 malloc 是用 FPO 编译的——这是 UMDH 无法克服的。众所周知(参见 Pavel Lebedinsky评论)UMDH 无法处理某些分配器类型,例如 SysAllocString。如果您确实在使用一些奇异的分配器,您可能想尝试一下LeakDiag - 它可以处理更多的分配器。

于 2009-04-26T12:17:17.433 回答
0

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

确保您的符号路径设置正确,
尤其是当您在与编译代码的机器不同的机器上运行 UMDH 时。

于 2009-02-05T23:23:37.590 回答