一日一点RakNet(55)--Crash Reporter(崩溃报告器)

崩溃报告器概览

 

Minidumps使得崩溃报告功能容易实现

       CrashReporter可以在RakNet/Samples/CrashReporter中找到,仅仅可以用于Windows平台,它的作用是调试无监控的服务器或游戏客户端。当崩溃发生时,CrashReporter会捕捉异常,写一个minidump,然后将信息写到磁盘或发送emailEmail的操作可以是交互式,打开用户的email客户端。或者是非交互式的,使用EmailSender类连接到mail服务器,自动发送崩溃报告。

 

CrashReporter.h中复制

       Minidump可以在visual studio中打开,可以查看在何处发生了崩溃,给出你本地的变化值。

 

如何使用minidump

       在硬件驱动器上放置minidump,双击它可以打开,使用Visual Studio打开。它会自动在引起崩溃的exe文件所在的目录寻找该exe文件。如果无法找到该exe文件,或者exe文件是不同的另外的文件,vs会在当前目录查找这个exe文件。如果仍然找不到,或者找到的文件是不同的一个文件,它会加载vs,指明vs无法找到可执行模块。这时会给出没有源码的提示。然而,在工程属性窗口中的命令行参数中指定modpath=<pathToExeDirectory>。最好的解决方法是将.dmp文件拷贝到一个包含了崩溃exe文件复件目录下。

       一旦加载了,VS会寻找.pdb文件,这个文件用于查找源码文件和其他的信息。只要在你的硬盘上的源码文件与创建exe的相符就可以。如果不相符,你需要查看源代码,但是它可能是错误的源码。有三种方法处理这种情况。

       第一种方法是修改指定源码位置的路径,那么就不会自动查找到错误的代码。这会导致debugger不会发现在.pdb中指向的源码。Vs会提醒你正确源码的位置。

 

       第二中方法是在不同的路径路径构建一个exe文件。例如,当你在release 发布时使用的是c:/Working/Mygame路径,可以在c:/Version2.2/Mygame目录下重新构建exe文件。构建完成之后,保持本目录下的源码文件,exe,和pdb不变。当收到了崩溃的.dmp时,将它拷贝到exe相同的目录,也就是c:/Version2.2/Mygame/bin目录。这样.pdb文件会指向正确的崩溃源码上。

       第三种方法是保存构建的标记或源码控制中的分支,在调试之前得到这个版本 (你仅仅需要源码,.exe.pdb)。调试之后,保存你先前的工作。

 

使用:

 

       #include “DbgHelp.h”

       连接DbgHelp.libws2_32.lib库。

 

By 北洋小郭

转载请注明出处,请勿用于任何商业用途,谢谢。

 

你可能感兴趣的:(windows,服务器,exe,email,磁盘,硬件驱动)