clr.dll!LogHelp_TerminateOnAssert を .NET 4.0 プロセスで実行する 質問する

clr.dll!LogHelp_TerminateOnAssert を .NET 4.0 プロセスで実行する 質問する

背景:私は、スレッドとタイマーがほとんどなく、ユーザー コントロールに 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ダウンロードしたファイルを保存するパスです。

おすすめ記事