【问题标题】:What causes UMDH to fail to give stack traces是什么导致 UMDH 无法提供堆栈跟踪
【发布时间】:2010-10-05 19:53:57
【问题描述】:

我以前用过 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

结果没有用。

帮助,我喜欢这个工具。

【问题讨论】:

    标签: visual-studio-2005 umdh


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      当你执行命令时,UMDH 会进行 PDB 关联:

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

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

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

      【讨论】:

        【解决方案3】:

        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 的路径。

        文档现在也可以使用online

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-29
          • 1970-01-01
          • 2015-05-14
          相关资源
          最近更新 更多