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 をロードできません。 . したがって、私は2つの質問があります:

1) SOS.DLL をロードすると元の問題が解決される可能性があります (ブレークポイントを追加できません) 2) ASP.NET アプリをデバッグするときに .loadby sos clr ステートメントを実行できるのに、VB.NET アプリをデバッグできないのはなぜですか。

4

2 に答える 2

2

CLR が読み込まれる前であっても、!sosex.mbp と !sosex.mbm を使用してブレークポイントを設定できます。

.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 に答える