2011-09-04 75 views
4

我不知道那的WinDbg是正确的工具,但是这就是我现在想WinDbg的斜面负荷SOS CLR

我的asp.net应用程序似乎有内存泄漏,它不断通过关于成长几乎每次页面加载3 MB(然后它回落...)

我想读取整个进程的内存,并确切地看到什么被存储,这是不必要的。

所以我跑的WinDbg,重视webserver40.exe过程

然后我尝试

.loadby sos clr 

,我得到

给LoadLibrary(调用C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ sos)失败,Win32错误0n193 “%1不是有效的Win32应用程序”。

请检查您的调试器配置和/或网络访问。

看来我有框架,这sos.dll Framework64

我试图同时使用

.load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos 

,但没有负载

我不明白为什么它寻找一个vaild 32位应用程序。即时通讯64位Windows 64位电脑上。

我怎样才能得到这个sos的东西加载?

此外,当我开始我得到这样的警告

警告:进程7240未连接的调试 可以检查的过程,但调试事件将不被接收

我也试过loadby sos mscorwks它没”不工作,但我知道这是停产。我在asp.net 4

我也读的地方,该代码应在调试加载SOS之前停止,只是挂VS 2010

非常感谢你。

再次,如果有另一种工具,可以更好地帮助我,我所有的耳朵:-)

回答

5

WebDev.WebServer40.exe是一个32位可执行文件。调试你需要使用32位的WinDbg。 Visual Studio以及Callipso服务器仍然以32位模式执行。

对于你的其他问题。是的,WinDbg是研究托管代码中内存泄漏的好工具。 This blog会让你开始。但在你的情况下,我不会确定你有内存泄漏。

  • 你是在说记忆最终会崩溃。这意味着它不是内存泄漏,因为泄漏的内存永远不会被释放。
  • 不要浪费你的时间来调查Callipso中的内存问题。IIS和Callipso之间存在很多差异,这会使您的调查结果不适用于生产环境。即使你发现Callipso实际上泄漏并不意味着IIS会。
+0

嗨。非常感谢。我读过,我需要32位版本。但MS的下载页面只有1个版本。我在哪里得到32位版本?其他信息也看起来很有帮助,生病了2步一步一步来。 [也许它不是技术上的泄漏,但我认为我仍然有东西要调试,不是?]。谢谢。 –

+4

在安装用于Windows的调试工具时,我能够找到两个版本的WinDbg http://msdn.microsoft.com/en-us/windows/hardware/gg463016。在该下载页面上,您将找到有关选择调试工具的说明。您将需要使用第二个选项:'选择* Redistributable Packages *下的* Debugging Tools *选项以下载调试工具(x86,x64,Itanium)的所有三个版本。 –