【问题标题】:Having problems analyzing a .dmp with WinDBG使用 WinDBG 分析 .dmp 时遇到问题
【发布时间】:2011-03-29 00:57:15
【问题描述】:

我首先要说这是我第一次使用 WinDbg 做任何事情,如果这是问题,请原谅我的愚蠢错误。我的网站一直在使用大量内存,在阅读了 Tess Fernandez 的博客和观看视频后,我正在尝试使用 WinDBG 来分析我的转储文件。

设置:我的 Web 服务器是一台 Windows 2008 64 位机器,以 32 位兼容模式运行我的 asp.net 2.0 网站。我已经设置了一个环境变量来获取所有符号,所以我在加载 WinDbg 时不会出错

我在 WinDbg 中使用以下命令:

.load C:\Windows\Microsoft.NET\Framework64\v2.0.50727\sos.dll
.load C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
!eeheap -gc

并得到以下错误:

垃圾收集器数据结构 不处于有效状态 遍历。它要么在“计划 阶段,”对象被移动的地方 周围,​​或者我们在 初始化或关闭 gc 堆。与显示相关的命令, 查找或遍历对象 因为 gc 堆段可能不起作用 适当地。 !dumpheap 和 !verifyheap 可能会错误地抱怨堆 一致性错误。 GC 次数 堆:1 请求详细信息时出错

我已阅读这可能是由某些版本不匹配引起的,我认为这可能是问题所在。为了做到这一点,我不得不创建路径

C:\Windows\Symbols\mscordacwks_AMD64_x86_2.0.50727.4016.dll\49CC5B00590000\mscordacwks_AMD64_x86_2.0.50727.4016.dll

所以当我调用 !eeheap -gc 时会加载库(否则会出现其他一些错误)。问题是我从普通的 .NET 文件夹中获取了这个 mscordacwks.dll 而不是 Framework64 文件夹。我不知道这是否是问题的原因,但我一直在用头撞砖墙,真的不知道还能做什么,所以我希望能得到一些帮助。

非常感谢。

【问题讨论】:

    标签: .net asp.net memory memory-leaks windbg


    【解决方案1】:

    像 John Robbins 在他的精彩帖子中解释的那样设置您的系统:https://www.wintellect.com/automatically-load-the-right-sos-for-the-minidump/

    然后先执行!analyze -v

    【讨论】:

    • 链接已失效
    • 链接现已修复
    【解决方案2】:

    看看this 的帖子。此外,请确保您使用的调试器和 sos 具有与转储相同的位数。 post 中的 linked blog 解释了这一点。因此,在您的情况下,请使用 64 位 windbg,从 Framework64 加载 sos.dll,并确保您的 mscordacwks 是“mscordacwks_amd64_amd64_2.0.50727.4016.dll”并且位于可访问的路径中。我喜欢将这个程序集和匹配的 sos.dll 一起复制到它自己的文件夹中,但是 YMMV。

    【讨论】:

    • 我认为这回答了我需要知道的内容。谢谢。
    猜你喜欢
    • 2011-07-04
    • 2018-04-25
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多