ࡱ>   I"#$%&'()*,-./012346789:;<=>@ABCDEFGHKLMNOPQRSUVWXYZ[\]^_abcdefghiRoot EntryvZWorkspace State Browser Editor stackdump0D:\Homeworld\tools\win32\StackDump\stackdump.dspTP$I_t0J_ (*E!EEEEEEEЬu1CourierPwشw` `` 00 00ump0D:\Homeworld\tools\win32\StackDump\stackdump.dspTP$I_t0J_ (*E!EEEEEEEЬu1CourierPwشw` `` 00 00MLJLump0D:\Homeworld\tools\win32\StackDump\stackdump.dspTP$I_t0J_ (*E!EEEEEEEЬu1CourierPwشw` `` 00 00Workspace Window"!Source_Control_Info(+IPI_stackdump5IPI_ ? stackdump ClassViewstackdump classesstackdump classesFileView#Workspace 'stackdump': 1 project(s)stackdump filesstackdump filesstackdump filesInfoViewDeveloper ProductsDeveloper ProductsFileView!EEEEEEEЬu1CourierPwشw` `` 00 00A"d:\homeworld\tools\win32\stackdump"d:\homeworld\tools\win32\stackdump stackdumpWorkspace 'stackdump': 1 project(s)stackdump filesstackdump filesstackdump filesInfoViewDeveloper ProductsDeveloper ProductsFileView!EEEEEEEЬu1CourierPwشw` `` 00 00Ystackdump - Win32 Debug stackdump.dspCProjectstackdump - Win32 Debugstackdump - Win32 Releasestackdump - Win32 DebugLj:\Temp\stack-Wed-Aug-11-10-39-09-1999-.dump z:\Trough\Luke\Homeworldrel.mapSSBR CTargetItemstackdump - Win32 DebugSSBRdepCDependencyContainerSSBRtypes.hCDependencyFileSSBR resource.hCDependencyFileSSBRDJWDJWDJWЬu1CourierPwشw` `` 00 00Y stackdumpmp.dspCProjectstackdump - Win32 Debugstackdump - Win32 Releasestackdump - Win32 DebugLj:\Temp\stack-Wed-Aug-11-10-39-09-1999-.dump z:\Trough\Luke\Homeworldrel.mapSSBR CTargetItemstackdump - Win32 DebugSSBRdepCDependencyContainerSSBRtypes.hCDependencyFileSSBR resource.hCDependencyFileSSBRDJWDJWDJWЬu1CourierPwشw` `` 00 00ClassView Window"JDebuggerTDocuments ` CClsFldSlob stackdumpmp.dspCProjectstackdump - Win32 Debugstackdump - Win32 Releasestackdump - Win32 DebugLj:\Temp\stack-Wed-Aug-11-10-39-09-1999-.dump z:\Trough\Luke\Homeworldrel.mapSSBR CTargetItemstackdump - Win32 DebugSSBRdepCDependencyContainerSSBRtypes.hCDependencyFileSSBR resource.hCDependencyFileSSBRDJWDJWDJWЬu1CourierPwشw` `` 00 00 dbgFatal dbgFatalfstackdump - Win32 Debug@ Control-C@ Control-BreakDatatype MisalignmentAccess Violation In Page Error No MemoryIllegal Instruction%Noncontinuable Exception&Invalid DispositionArray Bounds ExceededFloat Denormal OperandFloat Divide by ZeroFloat Inexact ResultFloat Invalid OperationFloat OverflowFloat Stack CheckFloat UnderflowInteger Divide by ZeroInteger OverflowPrivileged InstructionStack Overflow5 DLL Not FoundBDLL Initialization FailedcsmMicrosoft C++ Exception0x043201A0 - sdStackReferencesdStackReferencesdReferenceAddresslabel->addresssdDumpminFunctionAddressmaxFunctionAddressWatch1Watch2Watch3Watch4QЬu1CourierPwشw` `` 0-------------------------------------------------------------------*/sdfunctionlabel *sdLabelFindByAddress(udword address){ sdword nJump, index; index = sdNLabels / 2; nJump = index / 2; while (address < sdFunctions[index].address || address >= sdFunctions[index + 1].address) { if (address < sdFunctions[index].address) { index -= nJump; } else { index += nJump; } dbgAssert(index >= 0); if (index >= sdNLabels - 1) { index = sdNLabels - 2; } nJump = max(nJump / 2, 1); } return(&sdFunctions[index]);}/*----------------------------------------------------------------------------- Name : sdDumpAnalyze Description : Analyze the stack dump and print out a call stack Inputs : Outputs : Return :----------------------------------------------------------------------------*/void sdDumpAnalyze(void){ //sdword index; sdfunctionlabel *label; udword *stackPointer; udword iStack; udword address; //start by finding the reference function label = sdLabelFind("_dbgFatalf"); if (label == NULL) { dbgFatal(DBG_Loc, "Cannot locate reference label '_dbgFatalf'."); } sdReferenceOffset = sdReferenceAddress - label->address; //now find one of these reference labels so we know how to bias all the loaded label addresses iStack = sdDumpLength; stackPointer = sdDump; while (iStack) { address = *stackPointer; if (address >= sdReferenceOffset) { //if this dword has a chance of being a reference value address -= sdReferenceOffset; if (address >= minFunctionAddress && address <= maxFunctionAddress) { //if it's within the .text address space label = sdLabelFindByAddress(address); printf("\n+0x@C/C++HPHHHHHHH|HHHP.HHHHHHHHHH0"" .\memory.c&{3486698D-49EB-11CF-BF46-00AA004C12E2},nneC/C++HPHHHHHHH|HHHP.HHHHHHHHHH0 .\Debug.c&{3486698D-49EB-11CF-BF46-00AA004C12E2},,,PeC/C++HPHHHHHHH|HHHP.HHHHHHHHHH0N[[ .\stackdump.c&{3486698D-49EB-11CF-BF46-00AA004C12E2},,,LaNot FoundBDLL Initialization FailedcsmMicrosoft C++ Exception0x043201A0 - sdStackReferencesdStackReferencesdReferenceAddresslabel->addresssdDumpminFunctionAddressmaxFunctionAddressWatch1Watch2Watch3Watch4QЬu1CourierPwشw` `` 00 00