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

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

  1. Java初学者作业——添加程序断点,以Debug模式运行程序,观察变量的交换

    返回本章节 返回作业目录 需求说明: 定义两个变量,分别用于存储学生的语文成绩和数学成绩,通过程序将这两个变量的值进行交换,输出变量之前的值和交换后变量中的值. 添加断点,观察变量值的交换过程. 实现 ...

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

    转载自:[hyddd(http://www.cnblogs.com/hyddd/)] 总结一下,      Get是向服务器发索取数据的一种请求      而Post是向服务器提交数据的一种请求,在F ...

  3. Debug模式下程序卡

    Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用. D ...

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

    在vs编程中,常常涉及到32位和64位程序的编译,怎么判断当前编译是32位编译还是64位编译?如何判断是debug下编译还是release下编译?因为之前用到,这里记录一下,省的忘了又要疯狂的goog ...

  5. 如何打开uboot的函数debug()的开关,输出更多调试信息?

    答: 有两种方法: 一. 方法一 在文件<file>.c的首行加入以下内容: #define DEBUG #undef CONFIG_LOGLEVEL #define CONFIG_LOG ...

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

    编译策略介绍 关于优化级别:GCC_OPTIMIZATION_LEVEL 描述如下 None: Do not optimize.  [-O0]With this setting, the compil ...

  7. C++ Debug 模式下程序崩溃: Expression: is_block_type_valid(header->block_use)

    出现这样的错误,可能有很多种原因,而我出现崩溃的原因是由于代码中定义了vector容器, 未对它进行初始化操作导致的, 只要对它的大小进行初始化操作就行了 崩溃代码:  vector<Rect& ...

  8. IE的debug工具对程序进行debug跟踪JS代码

    2015/8/31 (其他的:显示zjfy_app_sys_ip.html,只需关闭启用保护模式) 显示ie的debug,F12-->Ctrl + P 扩展:第一步,在程序中设置断点,如图所示左 ...

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

    declare v_sal ) :; begin --if you could not see the output in console, you should set output on firs ...

随机推荐

  1. apache http server 局域网无法访问

    apache 本地配置完成测试成功,但局域网内无法访问. 1.主要是本本地的防火墙设置有关,修改防火墙设置就成了 控制面板->系统和安全->Windows 防火墙->允许程序通过Wi ...

  2. jqueryGrid 内置的onclickSubmit afterSubmit

    $(document).ready(function() { $('#jpgCustomers').jqGrid({ //url from wich data should be requested ...

  3. XHTML1.0对HTML4.0的改进

    1.XHTML借鉴了XML的写法,语法更加严格: 2.XHTML实现了把页面样式和内容分离了,废弃了HTML4.0中表示样式的标签和属性,推荐使用CSS样式来描述页面的样式. XHTML1.0 分为两 ...

  4. 1106. Lowest Price in Supply Chain (25)

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  5. .NET Framework 3.5 安装错误:0x800F0906、0x800F081F、0x800F0907

    使用Add-WindowsFeature 照成的问题 I get the failure below..  If I pick the Server 2012 R2 image from 8/15/2 ...

  6. CentOS中操作Psql

    psql -h 172.16.35.179 -U username -d dbname sername为数据库用户名,dbname为要连接的数据库名 查看现有的数据库:  \l或\list 查看所有列 ...

  7. C++中的运算符优先级

    1   ()  []  .  ->2   !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)    sizeof 3   * / % 4   + ...

  8. Week1 Team Homework #2: Introduction of each team member

    王洛书 我是来自浙江的王洛书.热爱历史,热爱美食,热爱代码,热爱博物馆.很喜欢软件工程这门课的上课方式,也很喜欢组里的这些同学.希望能大家一起努力,在这门课上真正地收获能力上的提升!   陈睿翊

  9. Django 学习笔记之三 数据库输入数据

    假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...

  10. java.lang.NullPointerException&com.cb.action.LoginAction.execute(LoginAction.java:48)

    今天做一个Spring和Struts的融合,通过bean注入后,程序一跑起来,就报这个错误: java.lang.NullPointerException com.cb.action.LoginAct ...