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

发布于 2024-08-02 03:11:05 字数 205 浏览 9 评论 0原文

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

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

任何参考或更具启发性的资源都将受到赞赏。

(Win32 platform c++)
Using __try and __finally, how can I get the module name (And address) of the cause for an exception? I call GetExceptionInformation() but from that I am not sure where this information is.

Given other resources online and in MSDN the Minidump handlers and other sample code seem to be able to get it, but I am not sure how.

Any references or more enlightening resources are appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

离旧人 2024-08-09 03:11:05

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

The EXCEPTION_RECORD record provided by EXCEPTION_POINTERS includes the address where the exception occured. You can then probably use EnumProcessModules() and GetModuleInformation() to locate the module that the exception address falls within, and then use GetModuleFileNameEx() to get that module's filename.

你的笑 2024-08-09 03:11:05

您想要遍历调用堆栈,如这篇 CodeProject 文章中所述。

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

You want to walk the callstack, as described in this CodeProject article.

Either you can use Jochen's code as it is, or try to harvest enough details to extract the information you want.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文