int f_heapdump(int arglist){ int arg1; checkarg(LEN1_TEST, "hdmp", arglist); arg1 = GET_NUMBER(car(arglist)); heapdump(arg1,arg1+10); return(T); }
void Memory::Check() { #ifdef _DEBUG if (! _CrtCheckMemory()) { _RPT0(_CRT_ERROR, "\n\nMemory Check Failed.\n"); heapdump(); Checkpoint(); _asm { int 3 } exit(1111); }
void CDECL NEAR makeError(unsigned lineNumber, unsigned msg, ...) { unsigned exitCode = 2, /* general program err */ level; va_list args; /* More arguments */ va_start (args, msg); /* Point 'args' at first extra arg */ if (ON(gFlags,F1_CRYPTIC_OUTPUT) && (msg / 1000) == WARNING) return; if (!bannerDisplayed) { displayBanner(); bannerDisplayed = (BOOL) TRUE; } switch (WaitForSingleObject(hSemaphore,WAIT_SEMAPHORE_TIME)){ case 0: if (lineNumber) fprintf(stderr,"%s(%d) : ",fName,lineNumber); else fprintf(stderr,"%s : ",NmakeStr); switch (level = msg / 1000) { case FATAL: makeMessage(FATAL_ERROR_MESSAGE); if (msg == OUT_OF_MEMORY) exitCode = 4; break; // // WIN32 - jaimes - 11/29/90 - Had to rename ERROR to NMAKE_ERROR // case NMAKE_ERROR: makeMessage(ERROR_MESSAGE); break; case WARNING: makeMessage(WARNING_MESSAGE); break; default: break; } fprintf(stderr," U%04d: ",msg); /* U for utilities */ vfprintf(stderr,getFarMsg(msg),args); putc('\n',stderr); fflush(stderr); #ifdef DEBUG_ERRORS if (msg == 1010) heapdump(__FILE__, __LINE__); #endif if (level == FATAL) { fprintf(stderr,"Stop.\n"); delScriptFiles(); #ifdef NMK_DEBUG fprintf(stderr, "Exiting with an error ...\n"); #endif exit(exitCode); } if (!ReleaseSemaphore(hSemaphore, 1, NULL)){ //MakA I don't use makeError because I will get blocked printf("ReleaseSemaphore error %d\n",GetLastError()); exit(1); } case WAIT_TIMEOUT: //MakA I don't use makeError because I will get blocked printf("Semaphore wait timeout\n"); exit(1); break; default: //MakA I don't use makeError because I will get blocked printf("Error unexpected value from semaphore wait %d\n",GetLastError()); exit(1); } }