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

05-11 15:36