0

いくつかのCOM オブジェクトを含むDLLがあります。場合によっては、このオブジェクトがクラッシュし、多数の 16 進情報とともに Windows イベント ログにエラー イベントが登録されます。このクラッシュが発生する理由はわかりません。

では、これらの COM オブジェクトの例外を追跡するにはどうすればよいでしょうか?

4

4 に答える 4

2

最初のステップは、Failコードの16進値(EG E_FAIL 0x80004005)を検索することです。エラーコードが何を意味するのかを理解するために、その値をGoogleに投稿することは本当に幸運でした。

次に、試行錯誤を繰り返して、失敗しているコード内の場所と、失敗の根本的な原因を特定しようとします。

于 2008-08-14T13:03:10.447 に答える
1

A good way to look up error (hresult) codes is HResult Plus or welt.exe (Windows Error Lookup Tool).

I use logging internally in the COM-classes to see what is going on. Also, once the COM-class is loaded by the executable, you can attach the VS debugger to it and debug the COM code with breakpoints, watches, and all that fun stuff.

于 2008-08-16T19:00:30.167 に答える
1

COM objects don't throw exceptions. They return HRESULTs, most of which indicate a failure. So if you're looking for the equivalent of an exception stack trace, you're out of luck. You're going to have to walk through the code by hand and figure out what's going on.

于 2008-08-16T19:55:19.620 に答える
1

エラーコードの意味をすばやく確認したい場合は、Visual Studioにパッケージ化されている「エラールックアップ」ツールを使用できます(詳細はこちら)。16進値を入力すると、そのエラーコードを説明する文字列が表示されます。

もちろん、それを知った後でも、なぜそれが起こっているのかを理解する必要があります。

于 2008-08-14T13:40:05.987 に答える