我不确定 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 位 PC 上。

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

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

警告:进程 7240 未作为调试对象附加
可以检查进程,但不会收到调试事件

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

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

非常感谢你。

再说一次,如果有另一种工具可以更好地帮助我,我会全力以赴:-)

最佳答案

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

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

  • 你是说内存最终会下降。这意味着这不是内存泄漏,因为泄漏的内存永远不会被释放。
  • 不要浪费时间研究 Callipso 中的内存问题。 IIS 和 Callipso 之间存在很多差异,这会使您的发现不适用于生产环境。即使您发现 Callipso 实际上正在泄漏,也不意味着 IIS 会泄漏。
  • 关于asp.net - windbg 无法加载 sos clr,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7298651/

    10-11 21:02