我有一个类似于报告的问题:
http://social.msdn.microsoft.com/Forums/lv/windbg/thread/52000403-db16-4f33-9b38-dae79d9ba038
由于文件路径,Adplus 无法为未知异常生成完整转储文件
我们得到了一个 SecondChance_*_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 不会在创建文件名时出错。我可能倾向于只对第二次机会未知异常进行完全转储...在 Actions1 下,异常代码 = " " 可以放置 MyActF 或 Void,具体取决于您是否想要完全转储或不进行转储。