0

私はで報告されたものと同様の問題を抱えています:

http://social.msdn.microsoft.com/Forums/lv/windbg/thread/52000403-db16-4f33-9b38-dae79d9ba038

ファイルパスが原因で不明な例外の完全なダンプファイルを生成するための追加のuable

2番目のChance_* _ UnknownExceptionが発生します。これは、adplusがファイル名の一部として含めようとします(失敗します)。

リンクで提案されているものと同様の変更を試したいのですが、adplusがダンプファイルを作成できることをテストしたいと思います。

したがって、問題は、「C ++で不明な例外をスローするにはどうすればよいですか?」です。

更新:以下のMSaltersのコメントを参照し、不明な例外を作成する方法を示しています。

また、将来の参考のために、フルダンプを実行でき、ファイル名のアスタリスクに問題がないadplus構成ファイルを追加します。

<ADPlus Version='2'>
    <KeyWords>
        <KeyWord Name="MyActF">
            .dump -u /ma ${AdpDumpDir}\FULLDUMP_FirstChance_UnknownException_${AdpProcName}_.dmp
        </KeyWord>
        <KeyWord Name="MyActS">
            .dump -u /ma ${AdpDumpDir}\FULLDUMP_SecondChance_UnknownException_${AdpProcName}_.dmp
        </KeyWord>
    </KeyWords>
  <Exceptions>  
        <Exception Code="epr">
            <Actions1>Void</Actions1>
            <Actions2>Void</Actions2>
        </Exception> 
        <Exception Code="bpe">
            <Actions1>FullDump</Actions1>
            <Actions2>FullDump</Actions2>       
        </Exception>
        <Exception Code="*">
            <Actions1>Log;Stack;Void</Actions1>
            <Actions2>Log;Stack;MyActS</Actions2>
            <ReturnAction1>GN</ReturnAction1>
            <ReturnAction2>GN</ReturnAction2>
        </Exception>
   </Exceptions>
</ADPlus>

注:このファイルは、eprプロセスのシャットダウン時にダンプを作成せず、「bpe」で完全なダンプを作成し、「」ダンプの特別な処理を行うため、adplusがファイル名の作成に失敗することはありません。2回目のチャンスの不明な例外でのみフルダンプを実行する傾向があるかもしれません...例外コードのActions1=" "で、フルダンプが必要か、ダンプなしが必要かによって、MyActFまたはVoidを配置できます。

4

1 に答える 1

3

「セカンドチャンス」とは、おそらくC ++例外ではなく、構造化例外処理(Win32)を処理していることを意味します。SEH例外は。を介してスローされRaiseException()ます。その最初の引数は例外コードです。例:0xC0000005。明らかに、40億の可能な値すべてに名前があるわけではありません。したがって、名前のない値は「不明」です。

于 2012-12-05T14:52:59.827 に答える