Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用WinDBG分析.dmp时遇到问题_.net_Asp.net_Memory_Memory Leaks_Windbg - Fatal编程技术网

.net 使用WinDBG分析.dmp时遇到问题

.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

我首先要说的是,这是我第一次用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堆段可能无法工作 正确地说!垃圾堆和垃圾堆!验证堆 可能会错误地抱怨堆 一致性错误。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

我想这回答了我需要知道的问题。谢谢。我想这正是我需要知道的。谢谢。链接现在已断开链接现在已修复链接现在已修复