1

我正在尝试使用 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,但在运行在 32 位进程中运行的 VB.NET 客户端应用程序时,我无法加载 CLR . 因此我有两个问题:

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

4

2 回答 2

2

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

.load sosex

!mbp mysource.cs 23  <--sets a BP at mysource.cs, line 23.
于 2012-07-14T18:31:06.150 回答
0

“无法找到模块 'clr'”错误是因为clr.dll 尚未加载。添加此断点:

sxe ld clr

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

.loadby sos clr
于 2015-07-21T22:36:21.207 回答