Win32 API堆栈与MinGW/MSYS一起走?

Hel*_*und 8 c++ winapi mingw

我将开发一个堆栈跟踪步骤到我们的win32 API平台支持,以捕获任何异常与JAVA堆栈跟踪的行为.实际上我们得到了Linux平台的全功能实现.

首先,我尝试使用win32 CaptureStackBackTrace API机制实现stackwalk.但是这个方法没有集成在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知道的那样......

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

谢谢你的任何提示.最好的祝福,

基督教

小智 7

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

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

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

dlltool -k -d dbghelp.def -l dbghelp.a
Run Code Online (Sandbox Code Playgroud)

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