背景:私は、スレッドとタイマーがほとんどなく、ユーザー コントロールに GDI 処理を使用する WinForm ベースの .NET 4.0 デスクトップ アプリケーションに取り組んでいます。開発中は、通常、sysinternal の Process Explorer を覗いて、GDI ハンドルやユーザー オブジェクトの数など、アプリケーションに異常がないことを確認します。
問題:Process Explorerを使用しているときに、スレッドProcess Explorer のアプリケーションのプロパティのタブに、"clr.dll!LogHelp_TerminateOnAssert+0x58f68" というエントリが大量に表示されます。これは正常ですか? 他の .net アプリケーション (過去に作成したもの) の Process Explorer のプロパティに同じエントリが表示されないため、正常ではないと思います。
LogHelp_TerminateOnAssert() とは何ですか? (clr.dll の関数だと思います)
LogHelp_TerminateOnAssert() が何度も呼び出されるのはなぜですか?
どのようなアドバイスでも大変助かります。
前もって感謝します。
ベストアンサー1
clr.dll!LogHelp_TerminateOnAssert+0x58f68
大きな数字 (+58f68) は、clr.dll の実際のメソッドが LogHelp_TerminateOnAssert() から遠く離れていることを示しています。正しい呼び出しスタックを取得するには、シンボルを修正して再試行する必要があります。そうすれば、実際のメソッドが何であるかがわかります。
これは LogHelp_TerminateOnAssert() ではないので、LogHelp_TerminateOnAssert() が何を行うかを調べても無駄です。
シンボルを修正するには、Process Explorerで に移動しOptions/Configure Symbols
、次のように入力します。
SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
c:\symbols
ダウンロードしたファイルを保存するパスです。