我有一个与MinGW编译的C ++应用程序,我一直在接收客户的崩溃投诉。 因此,除了大量login可能崩溃的部分(在发布新版本之前)之外,我一直在寻找一个崩溃logging器,以便在发生错误时帮助我找出堆栈跟踪和任何其他有用的debugging信息。
是否存在任何与MinGW应用程序兼容的工具? (似乎编译器和崩溃报告策略之间有着密切的关系,因此是个问题)。
有没有可以帮助我的Windows工具? 应用程序主要在Windows XP机器上运行。
能够写信息到一个文件就足够了我的目的。 然后,我可以要求我的客户给我发送信息。
我一直在寻找谷歌的breakpad和SetUnhandledExceptionFilter ,但我仍然不知道他们会以任何方式有用。 其他崩溃报告实用程序(如crashrpt )是为Visual C ++devise的,所以我想用MinGW尝试它们并没有什么意义。
编辑:关于这个问题的一些有用的链接
事实上这个问题并没有让崩溃报告起作用。 这对于DbgHelp库函数来说并不重要,最重要的是MiniDumpWriteDump
。 但是请记住,要在旧系统上重新分配DbgHelp库,并观察您打算调用的函数的版本要求 – 新版本的Windows至少带有该库的某个版本。
使用非MS编译器的问题(Embarcadero,以前的Borland产品,例如Watcom也存在这个问题)是创建的调试符号对DbgHelp库没有意义 – 这是调试的标准工具在Windows上。 PDB格式在很大程度上是没有记录的(对于一些线索来说,搜索条件: Sven Schreiber PDB ),用于创建它们的库不像DbgHelp库那样是“公共”的 – 后者只能用于读/解析创建的调试符号。 它们是Visual Studio产品的一部分,通常命名为mspdbXY.dll(其中XY是十进制数字)。
所以,如果你想创建bug报告,我强烈建议不要专注于“编译器问题”,而应该专注于调试器问题。 这里是你可以去的大方向:
.map
文件(我知道这样的扩展是几年前为Borland .map
文件编写的) 作为4的扩展,你也可以让GCC在编译过程中创建.S
(汇编)文件,以便在没有符号支持的情况下交叉引用源代码和崩溃转储。
鉴于我更喜欢unixoid平台上的GDB,但Windows上的WinDbg和其他调试器,我不能确定在Windows上的GDB是否支持实际崩溃转储格式(使用MiniDumpWriteDump
创建),所以我不确定什么格式可以在这种情况下,广东发展银行预计会是
顺便说一句:如果您使用Windows XP或更高版本,可以依靠这一事实,请使用AddVectoredExceptionHandler
而不是SetUnhandledExceptionFilter
准备编写故障转储。