在给定_EXCEPTION_POINTERS结构的情况下,如何获取导致结构化异常的模块名称? (win32 C ++)

时间:2009-08-14 18:38:37

标签: c++ windows exception-handling structured-exception

(Win32平台c ++) 使用__try和__finally,如何获取异常原因的模块名称(和地址)?我调用GetExceptionInformation(),但从那里我不确定这个信息在哪里。

鉴于其他资源在线和在MSDN中,Minidump处理程序和其他示例代码似乎能够获得它,但我不确定如何。

赞赏任何参考资料或更具启发性的资源。

2 个答案:

答案 0 :(得分:3)

EXCEPTION_POINTERS提供的EXCEPTION_RECORD记录包括发生异常的地址。然后,您可以使用EnumProcessModules()和GetModuleInformation()来查找异常地址所在的模块,然后使用GetModuleFileNameEx()来获取该模块的文件名。

答案 1 :(得分:1)

this CodeProject article中所述,您想要遍历callstack。

您可以按原样使用Jochen的代码,或尝试收集足够的详细信息以提取您想要的信息。