ASSERT的简易实现
2016-06-02 17:35
393 查看
在kbegine中实现了引擎自带的assert,下面对其进行粗略分析
void myassert(const char * exp, const char * func, const char * file, unsigned int line) { DebugHelper::getSingleton().backtrace_msg(); std::string s = (fmt::format("assertion failed: {}, file {}, line {}, at: {}\n", exp, file, line, func)); printf("%s", (std::string("[ASSERT]: ") + s).c_str()); dbghelper.print_msg(s); //abort 会抛出异常,在debug模式下会被ide捕获,从而起到了触发中断作用,根据中断回溯调用堆栈 abort(); } //调用该宏会传入当前函数名、函数所在的文件、函数所在的行数,已备在日志中查看定位问题 #define KBE_ASSERT(exp) if(!(exp))myassert(#exp, __FUNCTION__, __FILE__, __LINE__);
相关文章推荐
- 探讨C语言的那些小秘密之断言
- Assert(断言实现机制深入剖析)
- 测试框架nunit之assertion断言使用详解
- C++实现的分布式游戏服务端引擎KBEngine详解
- 详解C++编程中断言static_assert的使用
- 分析在Python中何种情况下需要使用断言
- 浅析Java异常处理中断言的使用
- Java陷阱之assert关键字详解
- python中assert用法实例分析
- 阅读 KBEngine 要理清的问题
- KBEngine 编译、运行、调试
- KBEngine Cocos2d JS 客户端启动过程
- KBEngine 客户端-loginapp-协议加载
- KBEngine 服务器端-loginapp-协议构建、解析执行
- TDD实现健壮的四则运算
- MFC控件 void DrawItem(LPDRAWITEMSTRUCT) { ASSERT(FALSE); }
- python 关键字 之 assert(断言)
- Cocos2d-x 断言 CCAssert 简述
- jmeter之接口测试(断言)