.net 使用WinDBG分析.dmp时遇到问题
我首先要说的是,这是我第一次用WinDbg做任何事情,如果这是问题的话,请原谅我愚蠢的错误。我的网站使用了大量内存,在阅读了Tess Fernandez的博客和视频后,我尝试使用WinDBG分析我的转储文件 设置:我的web服务器是一台Windows 2008 64位计算机,以32位兼容模式运行我的asp.net 2.0网站。我已经设置了一个环境变量来获取所有符号,这样在加载WinDbg时就不会出错 我正在WinDbg中使用以下命令:.net 使用WinDBG分析.dmp时遇到问题,.net,asp.net,memory,memory-leaks,windbg,.net,Asp.net,Memory,Memory Leaks,Windbg,我首先要说的是,这是我第一次用WinDbg做任何事情,如果这是问题的话,请原谅我愚蠢的错误。我的网站使用了大量内存,在阅读了Tess Fernandez的博客和视频后,我尝试使用WinDBG分析我的转储文件 设置:我的web服务器是一台Windows 2008 64位计算机,以32位兼容模式运行我的asp.net 2.0网站。我已经设置了一个环境变量来获取所有符号,这样在加载WinDbg时就不会出错 我正在WinDbg中使用以下命令: .load C:\Windows\Microsoft.NET
.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堆段可能无法工作
正确地说!垃圾堆和垃圾堆!验证堆
可能会错误地抱怨堆
一致性错误。GC的数量
堆:1请求详细信息时出错
我已经读到这可能是由一些版本不匹配引起的,我认为这可能是问题所在。为了走到这一步,我必须创建路径
C:\Windows\Symbols\mscordacwks\U AMD64\U x86\U 2.0.50727.4016.dll\49CC5B0590000\mscordacwks\U AMD64\U x86\U 2.0.50727.4016.dll
所以当我调用时,库被加载!eeheap-gc(否则会出现一些其他错误)。问题是我从普通的.NET文件夹中获取了这个mscordacwks.dll,而不是Framework64文件夹。我不知道这是否是问题的原因,但我一直把头撞在砖墙上,不知道还能做什么,所以我希望能得到一些帮助
非常感谢。看看这篇文章。此外,请确保使用的调试器和sos的比特数与转储的比特数相同。文章中的例子解释了这一点。因此,在您的情况下,请使用64位windbg,从Framework64加载sos.dll,并确保您的mscordacwks是“mscordacwks_amd64_amd64_2.0.50727.4016.dll”,并且位于可访问的路径中。我想把这个程序集和匹配的sos.dll一起复制到它自己的文件夹中,但是YMMV。请看帖子。此外,请确保使用的调试器和sos的比特数与转储的比特数相同。文章中的例子解释了这一点。因此,在您的情况下,请使用64位windbg,从Framework64加载sos.dll,并确保您的mscordacwks是“mscordacwks_amd64_amd64_2.0.50727.4016.dll”,并且位于可访问的路径中。我喜欢将此程序集和匹配的sos.dll一起复制到它自己的文件夹中,但是YMMV。设置您的系统,就像John Robbins在他的博文中解释的那样:
然后执行一个
!首先分析-v
。像约翰·罗宾斯在他的博文中解释的那样设置你的系统:
然后执行一个
!首先分析-v
。我想这回答了我需要知道的问题。谢谢。我想这正是我需要知道的。谢谢。链接现在已断开链接现在已修复链接现在已修复