gpt4 book ai didi

c++ - 如何在 C++ 中抛出未知异常?

转载 作者:行者123 更新时间:2023-11-28 03:26:42 25 4
gpt4 key购买 nike

我遇到的问题与报告的问题类似:

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,具体取决于您是想要完整转储还是不转储。

最佳答案

“第二次机会”意味着您可能正在处理结构化异常处理 (Win32),而不是 C++ 异常。 SEH 异常通过 RaiseException() 抛出。它的第一个参数是异常代码,例如0xC0000005。显然,并非所有 40 亿个可能值都有名称。因此,任何没有名称的值都是“未知的”。

关于c++ - 如何在 C++ 中抛出未知异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13724799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com