MMORPG大型游戏设计与开发(客户端架构 part5 of vegine)

客户端异常捕获,是一件必然的事情,特别是在开发的时候就更需要这些有利于找出问题原因的捷径。区别于服务器的是,客户端基本上是以界面为主,你很难在正常运行程序的情况下进行一些输出的监视,如一些日志的记录。开发中我们可以调用一些别的界面来监控输出,但发布的版本则不能。日志的记录在客户端也是必不可少的,但是客户端记录的日志一般都是必要的日志,毕竟客户端最后是放在别人的机器上,我们不能像服务器那边可以随意使用资源。如果客户端的日志过大,则会造成用户的不满,这种不满就决定了你应用的可行性,直观的说你的应用不能被用户所接受。所以在客户端产生异常奔溃的时候,往往会弹出一个提示框,然后将本次奔溃的日志发送到相应的异常资源收集服务器上,这样方便开发人员进行跟踪调试。

CODE

  模块exception文件base.h

/**
 * PAP Engine ( -- )
 * $Id base.h
 * @link -- for the canonical source repository
 * @copyright Copyright (c) 2013-2014 viticm( viticm@126.com )
 * @license
 * @user viticm<viticm@126.com/viticm.ti@gmail.com>
 * @date 2014-3-17 10:57:14
 * @uses vengine exception base functions
 */
#ifndef VENGINE_EXCEPTION_BASE_H_
#define VENGINE_EXCEPTION_BASE_H_

#include "vengine/config.h"

//ref from http://www.codeproject.com/tools/minidump.asp
//generate stack frame pointers for all functions - same as /Oy- in the project
#pragma optimize("y", off)

namespace vengine_exception {

namespace base {

VENGINE_API void process(PEXCEPTION_POINTERS exception, bool run_crashreport);
VENGINE_API void showstring(const char* format, ...);
VENGINE_API void showassert(const char* filename, 
                            uint16_t fileline, 
                            const char* exception);
VENGINE_API int32_t processinner(PEXCEPTION_POINTERS exception, 
                                 HWND hparentwnd, 
                                 const char* title);
}; //namespace base

}; //namespace vengine_exception

#define VENGINE_SHOW vengine_exception::base::showstring
#define VENGINE_ASSERT(condition) \
if (!condition) { \
  vengine_exception::base::showassert(__FILE__, \
                                      __LINE__, \
                                      #condition); \
} \
//  do { \
//  } while (0);

#endif //VENGINE_EXCEPTION_BASE_H_

  模块exception文件errorinfo

/**
 * PAP Engine ( -- )
 * $Id errorinfo.h
 * @link -- for the canonical source repository
 * @copyright Copyright (c) 2013-2014 viticm( viticm@126.com )
 * @license
 * @user viticm<viticm@126.com/viticm.ti@gmail.com>
 * @date 2014-3-17 12:02:16
 * @uses vengine exception error info functions
 */
#include "vengine/config.h"

namespace vengine_exception {

#pragma optimize("y", off)

namespace errorinfo {

bool create_smallinfo_dumpfile(PEXCEPTION_POINTERS exception, 
                               char* filename, 
                               uint16_t lasterror);
bool create_biginfo_dumpfile(PEXCEPTION_POINTERS exception,
                             char* filename,
                             uint16_t lasterror);
bool create_dumphelp_file(PEXCEPTION_POINTERS exception,
                          char* filename);
}; //namespce errorinfo

}; //namespace vengine_exception

 方法解释

//捕获异常,第一个为异常指针,第二个是指是否运行crashreport(异常收集器)
void process(PEXCEPTION_POINTERS exception, bool run_crashreport); 
void showstring(const char* format, ...); //异常抛出
//异常中断,第一个为中断的文件名,第二个为中断的行数,第三个为异常字符串
void showassert(const char* filename, uint16_t fileline, const char* exception); 
//异常捕获,区别于第一个方法的是,此异常为内部的,没有异常收集器
int32_t processinner(PEXCEPTION_POINTERS exception, 
                     HWND hparentwnd, 
                     const char* title);

errorinfo::create_* //函数,用来创建异常信息文件

SIMPLE

  天龙八部的异常收集:

总结

  异常收集是客户端比较重要的一部分,因为开发过程中不会出现的问题,不一定在发布的时候出现,也不一定在别的机器上不会出现。异常收集已经成了应用常见的一个模块,几乎所有的应用都会有这样的工具,或前台或后台的收集。下一节要讲的是客户端变量模块。

转载于:https://www.cnblogs.com/lianyue/p/3894025.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
 热更新框架设计系列课程总体介绍:       本系列课程由《热更新框架设计之Xlua基础》、《热更新框架设计之热更流程与热补丁技术》、《热更新框架设计游戏客户端框架》三套课程组成。 三套课程是一个不可分割有机的整体,笔者带领大家由浅入深逐级深入 ,在领悟热更精髓的基础之上,通过高端架构设计,**完成设计出“低耦合”、“低侵入”、“高复用”性的游戏(VR/AR)客户端热更框架。《热更新框架设计客户端热更框架》课程介绍:       本作为热更框架系列课程中的客户端框架设计与实现部分。理解本作需要之前的所有知识点积累,在其基础之上给学员展现当今商业热更框架中,商业级热更框架的基本原理、设计全过程、实现框架产品等全过程。通过本作学习可以让资深开发人员晋升为游戏架构师、主程、技术总监等职位。        为了更好更快的服务广大学员,本课程分为上、中、下三部分,内容如下:        上部:             UI框架与AB框架整合,重构整合为 “热更新UI框架”。        中部:             “热更新UI框架”与热更流程技术重构整合。               纯Lua框架设计理念与实现。        下部:              复合型热更框架设计与实现。              框架产品加入HotFix功能模块,且功能演示与测试完善。  A:《热更新框架设计客户端热更框架(中)》https://edu.csdn.net/course/detail/27135B:《热更新框架设计客户端热更框架(下)》https://edu.csdn.net/course/detail/27136 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值