2011-06-18 27 views
1

如何在发布版本中发生程序崩溃时创建dmp文件?我想我应该触发异常,但我不知道该怎么在发布版本中创建dmp文件

+1

什么平台? C++标准不包括崩溃转储,您需要针对此操作系统的操作系统特定机制。 –

回答

4

在Windows上,您可以使用Debug Helper API将minidump文件写入您选择的任何位置。该文件不需要发送给Microsoft。

http://msdn.microsoft.com/en-us/library/ms680369(v=vs.85).aspx

正如其他人所说,转储文件将是无用的,而不从正确的构建PDB文件。您可能需要考虑使用Microsoft的符号服务器来索引和管理PDB文件。

您可能还需要使用Breakpad直接汇报客户端错误您:

http://code.google.com/p/google-breakpad/

+0

如何触发所有异常?我看到使用MiniDumpWriteDump我应该使用try-except块来检查代码 – Stefano

+1

除非代码能够从异常中恢复,否则不需要使用try块。查看SetUnhandledExceptionFilter注册一个自定义方法来写入转储文件[here](http://msdn.microsoft.com/en-us/library/ms680634(v = vs.85).aspx)。 –

+0

找到了,谢谢 – Stefano

1

Windows automatically generates a minidump只要程序throws未处理的异常(即例外,你没有捕捉块)。 一定要构建pdb文件(假设您使用Visual Studio),以便您可以调试dmp文件。

+1

是否为在客户机上的发行版本中运行的应用程序构建小型转储? – Stefano

+0

是的,它的确如此,但是pdb文件并不是默认为发布版本创建的 – Euqil

+1

无论如何,它很难回答你的问题 - 我看不到你用什么平台建立,什么平台,客户端上安装什么等。 \ – Euqil