【问题标题】:WinDBG - ASP.NET and VB.NET - .loadby sos clrWinDBG - ASP.NET 和 VB.NET - .loadby sos clr
【发布时间】:2012-07-14 11:57:00
【问题描述】:

我正在尝试使用 WinDBG 在源文件中创建断点。我已经按照这里的建议:http://www.codeproject.com/Articles/22245/Quick-start-to-using-WinDbg,但是当我按 F5 时,我得到一个错误,上面写着:

Unable to insert breakpoint 0 at 00db0861, Win32 error 0n998
    "Invalid access to memory location."

我研究了这个错误,发现可能是因为我没有加载 CLR,即 .loadby sos clr。但是,当我运行此语句时,我收到一条错误消息:无法找到模块“clr”。如果我遵循此博客中的建议,我可以加载 CLR:http://humblecoder.co.uk/uncategorized/spotting-a-memory-leak-with-windbg-in-net,但这是针对 ASP.NET 应用程序的。

因此,如果我正在调试在 64 位进程中运行的 ASP.NET 应用程序,我可以加载 SOS.DLL,但在运行在 VB.NET 客户端应用程序中运行时,我无法加载 CLR 32位进程。因此我有两个问题:

1) 加载 SOS.DLL 可能会解决原始问题(无法添加断点) 2) 为什么我在调试 ASP.NET 应用时可以执行 .loadby sos clr 语句,而不是 VB.NET 应用。

【问题讨论】:

    标签: asp.net vb.net windbg


    【解决方案1】:

    您可以使用 !sosex.mbp 和 !sosex.mbm 设置断点,甚至在 CLR 加载之前。

    .load sosex
    
    !mbp mysource.cs 23  <--sets a BP at mysource.cs, line 23.
    

    【讨论】:

    • .load sosex 导致错误:对 LoadLibrary(sosex) 的调用失败,Win32 错误 0n2“系统找不到指定的文件。”请检查您的调试器配置和/或网络访问。
    • 你什么时候下载的?如果您在 XP 上运行,我在几周前发布了一个修复程序。如果您刚刚从我的网站下载它并且仍然遇到问题,您能告诉我二进制文件的日期/时间吗?
    • 哦等等。对不起。您必须从 stevestechspot.com 下载 sosex(免费)。然后将它放在调试器安装路径下的“winext”目录中。
    • 谢谢。我添加了以下路径,但仍然出现错误:C:\Program Files (x86)\Java\jdk1.6.0_24\bin;C:\Program Files (x86)\Debugging Tools for Windows (x86)\winext ;C:\Program Files\Debugging Tools for Windows (x64)\winext
    • 我有一台 Windows 7 64 位电脑。
    【解决方案2】:

    “无法找到模块 'clr'”错误是因为 clr.dll isn't loaded yet。添加这个断点:

    sxe ld clr
    

    当它中断时,将加载 clr.dll。然后你可以这样做:

    .loadby sos clr
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多