4

我不确定 windbg 是正确的工具,但这就是我现在正在尝试的

我的 asp.net 应用程序似乎有内存泄漏,几乎每次页面加载时它都会增长约 3 MB(然后它又会下降......)

我想读取整个进程内存并准确查看存储的内容是不必要的。

于是我运行windbg,附加到webserver40.exe进程

然后我尝试

.loadby sos clr

我得到

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

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

看来我在 Framework AND Framework64 中有这个 sos.dll

我尝试使用

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

但没有加载

我不明白它为什么要寻找有效的 32 位应用程序。我在带有 64 位 Windows 的 64 位电脑上。

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

另外,当我开始时,我会收到此警告

WARNING: Process 7240 is not attach as a debuggee 可以检查进程但不会收到调试事件

我也试过loadby sos mscorwks它没有用,但我知道它已经停产了。我在asp.net 4

我还在某处读到,代码应该在加载 sos 之前在调试中停止,这只会挂起 VS 2010。

非常感谢。

同样,如果有其他工具可以更好地帮助我,我会全力以赴 :-)

4

1 回答 1

5

WebDev.WebServer40.exe 是 32 位可执行文件。要调试,您需要使用 32 位 WinDbg。Visual Studio 以及 Callipso 服务器仍在 32 位模式下执行。

对于你的另一个问题。是的,WinDbg 是一个很好的工具来调查托管代码中的内存泄漏。这个博客会让你开始。但是,在您的情况下,我不确定您是否存在内存泄漏。

  • 你是说内存最终会下降。这意味着它不是内存泄漏,因为泄漏的内存永远不会被释放。
  • 不要浪费时间调查 Callipso 中的内存问题。IIS 和 Callipso 之间存在很多差异,这会使您的发现不适用于生产环境。即使您发现 Callipso 实际上正在泄漏,也不意味着 IIS 会泄漏。
于 2011-09-04T17:26:46.553 回答