- Code/Resource
- Windows Develop
- Linux-Unix program
- Internet-Socket-Network
- Web Server
- Browser Client
- Ftp Server
- Ftp Client
- Browser Plugins
- Proxy Server
- Email Server
- Email Client
- WEB Mail
- Firewall-Security
- Telnet Server
- Telnet Client
- ICQ-IM-Chat
- Search Engine
- Sniffer Package capture
- Remote Control
- xml-soap-webservice
- P2P
- WEB(ASP,PHP,...)
- TCP/IP Stack
- SNMP
- Grid Computing
- SilverLight
- DNS
- Cluster Service
- Network Security
- Communication-Mobile
- Game Program
- Editor
- Multimedia program
- Graph program
- Compiler program
- Compress-Decompress algrithms
- Crypt_Decrypt algrithms
- Mathimatics-Numerical algorithms
- MultiLanguage
- Disk/Storage
- Java Develop
- assembly language
- Applications
- Other systems
- Database system
- Embeded-SCM Develop
- FlashMX/Flex
- source in ebook
- Delphi VCL
- OS Develop
- MiddleWare
- MPI
- MacOS develop
- LabView
- ELanguage
- Software/Tools
- E-Books
- Artical/Document
DEBUG.CPP
Package: MSDN_VC98.zip [view]
Upload User: bangxh
Upload Date: 2007-01-31
Package Size: 42235k
Code Size: 2k
Category:
Windows Develop
Development Platform:
Visual C++
- #include "stdafx.h"
- #ifdef _PSEUDO_DEBUG // entire file
- #ifdef _PSEUDO_DEBUG
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- LONG AssertBusy = -1;
- LONG AssertReallyBusy = -1;
- BOOL AssertFailedLine(LPCSTR lpszFileName, int nLine)
- {
- TCHAR szMessage[_MAX_PATH*2];
- InterlockedDecrement(&AssertReallyBusy);
- // format message into buffer
- wsprintf(szMessage, _T("File %hs, Line %d"),
- lpszFileName, nLine);
- TCHAR szT[_MAX_PATH*2 + 20];
- wsprintf(szT, _T("Assertion Failed: %sn"), szMessage);
- OutputDebugString(szT);
- if (InterlockedIncrement(&AssertBusy) > 0)
- {
- InterlockedDecrement(&AssertBusy);
- // assert within assert (examine call stack to determine first one)
- DebugBreak();
- return FALSE;
- }
- // active popup window for the current thread
- HWND hWndParent = GetActiveWindow();
- if (hWndParent != NULL)
- hWndParent = GetLastActivePopup(hWndParent);
- // display the assert
- int nCode = ::MessageBox(hWndParent, szMessage, _T("Assertion Failed!"),
- MB_TASKMODAL|MB_ICONHAND|MB_ABORTRETRYIGNORE|MB_SETFOREGROUND);
- // cleanup
- InterlockedDecrement(&AssertBusy);
- if (nCode == IDIGNORE)
- return FALSE; // ignore
- if (nCode == IDRETRY)
- return TRUE; // will cause DebugBreak
- AfxAbort(); // should not return (but otherwise DebugBreak)
- return TRUE;
- }
- void Trace(LPCTSTR lpszFormat, ...)
- {
- va_list args;
- va_start(args, lpszFormat);
- int nBuf;
- TCHAR szBuffer[512];
- nBuf = _vstprintf(szBuffer, lpszFormat, args);
- ASSERT(nBuf < (sizeof(szBuffer)/sizeof(szBuffer[0])));
- CString strMessage;
- if (AfxGetApp() != NULL)
- strMessage = ((CString) (AfxGetApp()->m_pszExeName)) + _T(": ");
- strMessage += szBuffer;
- OutputDebugString(strMessage);
- va_end(args);
- }
- #endif // _PSEUDO_DEBUG