Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.0 KiB

  1. //*********************************************************************
  2. //* Microsoft Windows **
  3. //* Copyright (c) 1994-1998 Microsoft Corporation
  4. //*********************************************************************
  5. // debugging macros
  6. #undef ASSERT
  7. #undef DEBUGMSG
  8. #ifdef DEBUG
  9. // component name define
  10. #ifndef SZ_COMPNAME
  11. #define SZ_COMPNAME
  12. #endif // SZ_COMPNAME
  13. static void _AssertFailedSz(LPCSTR pszText,LPCSTR pszFile, int line)
  14. {
  15. LPCSTR psz;
  16. char ach[256];
  17. static char szAssertFailed[] = SZ_COMPNAME "%s (%s,line %d)\r\n";
  18. for (psz = pszFile + lstrlen(pszFile); psz != pszFile; psz=AnsiPrev(pszFile, psz))
  19. {
  20. if ((AnsiPrev(pszFile, psz)!= (psz-2)) && *(psz - 1) == '\\')
  21. break;
  22. }
  23. wsprintf(ach, szAssertFailed, pszText,psz, line);
  24. OutputDebugString(ach);
  25. }
  26. static void _AssertFailed(LPCSTR pszFile, int line)
  27. {
  28. static char szAssertFailed[] = "Assertion failed";
  29. _AssertFailedSz(szAssertFailed,pszFile,line);
  30. }
  31. static void cdecl _DebugMsg(LPCSTR pszMsg, ...)
  32. {
  33. char ach[2*MAX_PATH+40];
  34. va_list args;
  35. va_start(args,pszMsg);
  36. wvsprintf(ach, pszMsg, args);
  37. //wvsprintf(ach, pszMsg, (LPSTR)(&pszMsg + 1));
  38. OutputDebugString(SZ_COMPNAME);
  39. OutputDebugString(ach);
  40. OutputDebugString("\r\n");
  41. }
  42. static void cdecl _DebugTrap(LPCSTR pszMsg, ...)
  43. {
  44. _DebugMsg(pszMsg);
  45. DebugBreak();
  46. //_asm {int 3};
  47. }
  48. //#define ASSERT(f) {if (!(f)) { _AssertFailed(__FILE__, __LINE__); _asm {int 3}; } }
  49. #define ASSERT(f) {if (!(f)) { _AssertFailed(__FILE__, __LINE__); DebugBreak(); } }
  50. //#define ASSERTSZ(f,s) {if (!(f)) { _AssertFailedSz(s,__FILE__, __LINE__); _asm {int 3}; } }
  51. #define ASSERTSZ(f,s) {if (!(f)) { _AssertFailedSz(s,__FILE__, __LINE__); DebugBreak(); } }
  52. #define DEBUGMSG _DebugMsg
  53. #define DEBUGTRAP _DebugTrap
  54. #else // DEBUG
  55. #define ASSERT(f)
  56. #define ASSERTSZ(f,s)
  57. #define DEBUGMSG 1 ? (void)0 : (void)
  58. #define DEBUGTRAP 1 ? (void)0 : (void)
  59. #endif