C++ 例外コードの検索
-
09-06-2019 - |
質問
例外コードがわかったとしても、スローされた実際の例外が何を意味するのかをさらに詳しく知る方法はありますか?
問題の私の例外:0x64487347
例外アドレス:0x1
コールスタックには情報が表示されません。
私はクラッシュの .dmp をレビューしていますが、Visual Studio で実際にデバッグしているわけではありません。
解決
あなたはクラッシュ ダンプをレビューしているので、それが顧客から提供されたものであり、追加の計測器を使用しても障害を簡単に再現できないと仮定します。
例外コード 0x64487347 は ASCII "dShG" であり、開発者はこのようなマジック ナンバーを作成するときにルーチンまたは障害状態の頭文字を使用することが多いことに注意してください。
少しグーグル検索すると、適切なコンテキストで dHsg が 1 件ヒットしました。これは、Google ブックで Kate Gregory 著の「Using Visual C++ 6」を検索した関数の名前です。残念ながら、それだけでは役に立ちませんでした。
他のヒント
Microsoft のランタイムからスローされる真の C++ 例外の SEH コードは 0xe06d7363 (E0 + 'msc') になります。他にも例外があります。
.NET は、コード 0xe0434f4d (E0 + 'COM') の SEH 例外を生成します。
NT のステータス コードは ntstatus.h に文書化されており、通常は 0x80 (警告) または 0xC0 (エラー) で始まります。最も有名なのは 0xC0000005、STATUS_ACCESS_VIOLATION です。
どのブロックが例外をスローしたかがわかっている場合、より具体的なハンドラーを catch ブロックに配置して、そのように分離することはできますか?
自分でロールした例外をスローしていますか?
編集:あなたに向けるのを忘れていました この記事 Visual C++ 例外については、非常に便利であることがわかりました。
ロブ