我将开发一个堆栈跟踪步骤到我们的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本身肯定不可再发行.