一头汗的专栏
有用用之,无用弃之
我的服务端之C++游戏服务端防崩溃
分类: 我的服务端 C/C++ 2013-12-07 00:03 729人阅读评论(0) 收藏举报
c++Linux服务端崩溃signal
在游戏开发当中,不用我多说了,游戏的稳定性是相当重要的。
为了追求游戏的稳定性,很多开发者都会选择脚本语言作为游戏的主要开发语言。因为使用脚本语言,即使游戏出
现重大的bug,由于脚本支持热更的天然优势,使开发者更迅速地解决问题;而且脚本的良好容错性,也会使游戏系
统不会轻易崩溃。但是,一些即时性游戏需要更高性能的,开发者可能会选择C/C++作为开发语言,但是怎样来保证
游戏的稳定性呢?
关键词是信号
其实在Linux系统中防崩溃的相关内容,我已经在以前的一篇博文粗略提及过。下面再更详细地描述一下。
#ifndef SHOWCRASH_H
#define SHOWCRASH_H
#include <>
#include <>
#include <>
#include <>
#include <>
#include <>
#include <string>
#include ""
#include ""
using namespace std;
class ShowCrash
{
public:
ShowCrash();
static void CrashFunction(int);
static const int MAX_JMP_BUF = 16;
static const int MAX_CALLSTACK_DEPTH = 32;
enum buffername
{
BUF_MAIN ,
BUF_COUNT
};
private:
};
extern int buf_index;
#define SETJMP(index)\
setjmp(buff[index]);\
buf_index = index;\
extern ShowCrash g_showcrash;
1
extern jmp_buf buff[ShowCrash::MAX_JMP_BUF];
#endif
#include ""
ShowCrash g_showcrash;
jmp_buf buff[ShowCrash::MAX_JMP_BUF];
int buf_index;
ShowCrash::ShowCrash()
{
struct sigaction act, oact;
= CrashFunction;
sigemptyset(&); //娓呯┖姝や俊鍙烽泦
= SA_NODEFER;
sigaction(SIGINT, &act, &oact);
sigaction(SIGABRT, &act, &oact);
sigaction(SIGSEGV,
我的服务端之C++游戏服务端防崩溃 来自淘豆网m.daumloan.com转载请标明出处.