Debug模式应用程序输出Debug调试信息(现成的宏定义,用于格式化打印信息)

[cpp] view plain copy

  1. // Debug模式,主要输出一些调试的信息。
  2. #ifdef UNICODE
  3. #define _FILE_          _STR2WSTR(__FILE__)
  4. #define _FUNCTION_          _STR2WSTR(__FUNCTION__)
  5. #else
  6. #define _FILE_          __FILE__
  7. #define _FUNCTION_          __FUNCTION__
  8. #endif
  9. #define MAX_BUF_SIZE   (1024)
  10. #define MAX_BIN_COUNT   (16)
  11. #define MAX_BIN_SIZE   (64)
  12. #ifdef _DEBUG
  13. #define new DEBUG_NEW
  14. #define DBGPRINT(lpszFmt, ...) \
  15. TCHAR szText[1024] = {0}; \
  16. StringCchPrintf(szText, _countof(szText), lpszFmt, __VA_ARGS__);    \
  17. OutputDebugString(szText);
  18. #define DBGFAILED(dwError)  \
  19. LPTSTR lpszBuf = NULL;  \
  20. TCHAR szError[1024] = {0};  \
  21. FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, LANG_NEUTRAL, (LPTSTR)&lpszBuf, 0, NULL); \
  22. StringCchPrintf(szError, _countof(szError), _T("\nError: File: %s \n\tLine: %d Function: %s()\n\tReason: %s\n"), _FILE_, __LINE__, _FUNCTION_, lpszBuf);    \
  23. OutputDebugString(szError); \
  24. LocalFree(lpszBuf);
  25. #define DUMPBIN(pData, dwSize) \
  26. TCHAR szData[MAX_BIN_SIZE] = {0}; \
  27. TRACELOGINFO(_T("\n-----------00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F")); \
  28. for(DWORD i = 0; i < dwSize; i++) \
  29. { \
  30. if(0 == (i % MAX_BIN_COUNT)) \
  31. { \
  32. TRACELOGINFO(szData); \
  33. StringCchPrintf(szData, _COUNTOF_(szData), _T("\n%08Xh: %02X"), i, pData[i]); \
  34. } \
  35. else \
  36. { \
  37. StringCchPrintf(szData + _tcslen(szData), _COUNTOF_(szData) - _tcslen(szData), _T(" %02X"), pData[i]); \
  38. } \
  39. } \
  40. OutputDebugString(szData); \
  41. OutputDebugString(_T("\n----------------------------------------------------------\n"));
  42. #else
  43. #define DBGPRINT(lpszFmt, ...)
  44. #define DBGFAILED()
  45. #define DUMPBIN(pData, dwSize)
  46. #endif

http://blog.csdn.net/visualeleven/article/details/7211249

时间: 2024-10-27 12:54:15

Debug模式应用程序输出Debug调试信息(现成的宏定义,用于格式化打印信息)的相关文章

学习笔记_Java get和post区别(转载_GET一般用于获取/查询资源信息,而POST一般用于更新资源信息)

转载自:[hyddd(http://www.cnblogs.com/hyddd/)] 总结一下,      Get是向服务器发索取数据的一种请求      而Post是向服务器提交数据的一种请求,在FORM(表单)中,       Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!       浅谈HTTP中Get与Post的区别 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称

Linux下Debug模式启动Tomcat进行远程调试

J2EE开发各类资源下载清单,  史上最全IT资源,点击进入! 一.      应用场景 在实际的测试过程中,可能会遇到由于程序执行的不间断性,我们无法构造测试场景来验证某个功能的正确性,只有通过代码级的调试才能验证功能是否正确.然而开发本地调试的话,不具有说服力,这时我们测试人员必须连接到linux下的基线版本代码进行远程调试 二.调试步骤 1.部署服务工程到Linux系统下的Tomcat中,本文档重点是远程调式,为了防止文档篇幅累赘,这里就不介绍部署工程了. 2.更改tomcat远程调试端口

[转] 关于VS中区分debug与release,32位与64位编译的宏定义

在vs编程中,常常涉及到32位和64位程序的编译,怎么判断当前编译是32位编译还是64位编译?如何判断 是debug下编译还是release下编译?因为之前用到,这里记录一下,省的忘了又要疯狂的google. 1.判断是debug编译还是release编译. 如果_DEBUG定义了表示是debug编译,否则是release编译. 2.判断是32位编译还是64位编译. 在 Win32 配置下,_WIN32 有定义,_WIN64 没有定义.在 x64 配置下,两者都有定义.即在 VC 下,_WIN3

VS2013+cocos2d-x3.10 调试项目同时在控制台(黑窗--终端)打印信息

今天!有会儿空功夫,装了cocos2d-x v3.10. 新建项目,打开,发布,打包!(打包环境配置),真是一键搞定派. 好吧!这就是发展吧.快,简,易.只要你喜欢随心所欲. 在小玩之余发现了一个奇怪的事情,标准输出信息(如std::cout.printf等)不是都是输出到控制台的(也就是传说中的黑窗)?控制台那? 只有调试的游戏项目孤零零的站在那里! 我这里除了把HelloWorld!换了张图片以外!还有就是加了个onTouchBegan(),onTouchEnd()用于输出打印触摸的点的坐标

解决部分在Debug模式下程序没问题但是Release模式下出现问题的方法

编译策略介绍 关于优化级别:GCC_OPTIMIZATION_LEVEL 描述如下 None: Do not optimize.  [-O0]With this setting, the compiler's goal is to reduce the cost of compilation and to make debugging produce the expected results. Statements are independent: if you stop the program

Oracle PLSQL Demo - 01.定义变量、打印信息

declare v_sal number(5) := 6000; begin --if you could not see the output in console, you should set output on first use the command in command line : set serveroutput on dbms_output.put_line(v_sal); end;

Eclipse Java,debug模式无法调试,调试按钮不可用时解决办法

经常出现debug模式进入后,debug的几个按钮置灰,F5,6,8,没有任何反应时,这样操作: 退出 Eclipse.打开 Eclipse 目录下的 configuration 下的 org.eclipse.osgi, 清空这个目录.启动 eclipse.

python flask框架学习——开启debug模式

学习自:知了课堂Python Flask框架——全栈开发 1.flask的几种debug模式的方法 # 1.app.run 传参debug=true app.run(debug=True) #2 设置app的配置 app = Flask(__name__) app.config['DEBUG'] = True #3 配置文件方式 # config.py中添加debug模式 DEBUG = True #app.py中引用配置 import config app.config.from_object

以debug模式启动tomcat服务器

1, 编辑tomcat\bin\catalina.bat,在 rem Guess CATALINA_HOME if not definedset "CURRENT_DIR=?%" 前添加以下代码以绑定一个端口8787: if ""%1"" == ""stop"" goto skip_config SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi