我的Visual C ++应用程序使用/ EHA选项编译,让我捕获结构化异常(除零,访问冲突等)。然后我使用_set_se_translator()将这些异常翻译成我自己的异常类。我的目标是改进我们对这些类型的异常的记录。
我可以从EXCEPTION_RECORD结构和异常地址中获取异常类型。我希望能够收集更多信息,例如抛出异常的源文件/位置,调用堆栈等。这可能吗?
我确实在结构化异常上创建了一个异常minidump - 是否有一个工具可以自动从中获取调用堆栈?
答案 0 :(得分:1)
使用minidump事后调试可以调用堆栈和所有其他异常信息:
http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx
AFAIK,如果没有.pdb文件,则无法在记录位置生成堆栈信息。通常.pdb文件未安装在客户端计算机上。
答案 1 :(得分:0)
我的一个想法是在一些不同的线程中使用不同的转换器函数(每个线程有一个转换器函数),所以我可以知道抛出结构化异常的线程。
它不太实用,因为你不能将任何参数传递给翻译函数,所以你需要一堆不同的翻译函数。