如何在不丢失原始调用堆栈的情况下重新抛出异常?

6 c++ windows exception-handling exception

情况如下:线程A捕获异常,将异常的数据保存在内存中的某处(在异常过滤器中使用GetExceptionInformation),然后线程B获取该异常信息并想要重新抛出它.但问题是,当线程B重新捕获捕获的异常时,我错过了导致异常的原始调用堆栈.
如何在不丢失原始调用堆栈的情况下重新抛出异常?(请注意,这个问题与C++有关).

Adr*_*ore 2

您可以展开 catch 块中的堆栈并将其保存为要重新抛出的异常的一部分。在 C++ 中展开堆栈有点棘手,但您可以查看WxWidgets附带的故障转储收集器代码作为示例。