gpt4 book ai didi

c++ - 使用 MinGW/MSYS 遍历 Win32 API 堆栈?

转载 作者:可可西里 更新时间:2023-11-01 17:38:37 26 4
gpt4 key购买 nike

我必须开发一个堆栈跟踪遍历到我们的 win32 API 平台支持,以捕获具有 JAVA 堆栈跟踪行为的任何异常。实际上,我们得到了 Linux 平台的完整功能实现。

首先,我尝试使用 win32 CaptureStackBackTrace API 实现堆栈遍历机制。但是这个方法并没有集成在mingw的实际winbase头文件中(使用MSYS/MinGW 5.1.x)...

所以我决定按照此链接的说明尝试使用 dbgheader 机制: http://sites.google.com/site/kenscode/prime-programs/boinc-with-mingw-on-win32

但我又失败了,遇到了我无法解决的链接器故障。我认为 MinGW 无法解析 dbgheader 库....

DrMinGW 不是我的选择,虽然它是一个 JIT 调试器,但我必须实现一个堆栈跟踪机制,用于运行时发生的任何异常,并具有可自定义的日志文件可跟踪性,就像我们从 JAVA 中了解到的那样......

有没有人让 MSYS/MinGW 可以在握手中使用 win32 API 运行?我不会将编译器更改为丑陋的 MVC 编译器,而不是使用 MSYS/MinGW...

感谢任何提示。最好的问候,

基督徒

最佳答案

通过以下链接查看 Mr. Edd 的堆栈跟踪库。它将生成一个很好的堆栈框架列表,并具有支持 MinGW 的特定代码。

http://www.mr-edd.co.uk/code/stack_trace

但是,他的库使用了 dbghelp.dll,因此您可能会在尝试编译它时遇到一些问题。据我所知,MinGW 不包含此 DLL 的导入库(请参阅旧功能请求 here )。然而,我成功地自己创建了一个导入库。您只需使用 Wine 项目中的 .def 文件(检查上一个链接的附件)并运行 MingW 实用程序 dlltool 即可执行相同的操作:

dlltool -k -d dbghelp.def -l dbghelp.a

然后您可以将生成的 dbghelp.a 文件包含在您的项目中。您可能不希望在发布版本中依赖 dbghelp.dll,因为 DLL 本身肯定不可再分发。

关于c++ - 使用 MinGW/MSYS 遍历 Win32 API 堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3318564/

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