/************************************************************************
* debug.cpp *
* NB change the path and name of the debugfile in debug.h before using *
* the debug functions. To enable debug functions change the commented *
* line in the debug.f header file. Warning - debug files can get very *
* big quite quickly. I only use them for hard to finc bugs. *
* One alternative is just to call the DebugMessage function at any *
* point without using #ifdef DEBUG.... and then you'll get a smaller *
* file referencing the area you are interested in. (Or just use *
* Messageboxes for real small bugfinding.... Anyway, the functions are *
* there should they be required. Eugen Polukhin had suggested using a *
* second screen for the debug messages, with the ability to switch *
* between the two with a keypress. It looked good, but in reality it's *
* not as useful because most bugs I would use this for are fatal... *
************************************************************************/
#include <windows.h>
#include "debug.h"
#include "dasm.h"
/************************************************************************
* DebugMessage *
* - this is the only function. It opens the debug file if it isnt open *
* already - see the debug.h file for the full name of it, as I have *
* it set. If you use this function then you'll need to change it. *
* - DebugMessages are appended to the debug file. *
* - The function can be used as wvsprintf is used, with any number of *
* arguments. See the scheduler for many examples of its use *
************************************************************************/
void DebugMessage(char *szFormat,...) {
char DebugBuff[200];
HANDLE efile;
dword num;
va_list vaArgs;
va_start(vaArgs,szFormat);
int len=wvsprintf(DebugBuff,szFormat,vaArgs);
va_end(vaArgs);
efile=CreateFile(DEBUGFILE,GENERIC_WRITE,0,NULL,OPEN_ALWAYS,0,NULL);
if (efile==INVALID_HANDLE_VALUE) {
MessageBox(MainWnd,"Debug File Creation Failed","Borg Disassembler Alert",MB_OK);
return;
}
SetFilePointer(efile,0,0,FILE_END);
WriteFile(efile,DebugBuff,len,&num,NULL);
WriteFile(efile,"\r\n",2,&num,NULL);
CloseHandle(efile);
}
/************************************************************************
* ShowLastError *
* - Can be called to show windows error messages, decoded *
************************************************************************/
void ShowLastError(void) {
LPTSTR lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL);
MessageBox(MainWnd,lpMsgBuf,"Borg Error Message",MB_OK);
LocalFree(lpMsgBuf);
}
Detected encoding: ASCII (7 bit) | 2
|