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

StackOverflow https://stackoverflow.com/questions/10935

  •  08-06-2019
  •  | 
  •  

質問

私は持っています DLL 一部で COMオブジェクト. 。時々、これは反対です クラッシュする そして、多数の 16 進数の情報とともにエラー イベントを Windows イベント ログに登録します。なぜこのようなクラッシュが発生するのかわかりません。

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

役に立ちましたか?

解決

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

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

他のヒント

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

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

エラー (hresult) コードを検索する良い方法は、HResult Plus または welt.exe (Windows エラー検索ツール) です。

何が起こっているかを確認するために、COM クラスの内部でログを使用します。また、実行可能ファイルによって COM クラスが読み込まれると、それに VS デバッガーをアタッチし、ブレークポイント、監視、その他すべての楽しい機能を使用して COM コードをデバッグできます。

COM オブジェクトは例外をスローしません。これらは HRESULT を返しますが、そのほとんどは失敗を示します。したがって、例外スタック トレースに相当するものを探している場合は、運がありません。コードを手作業で調べて、何が起こっているのかを理解する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top