
00001 //***************************************************************************** 00002 // File : gzStackInfo.h 00003 // Module : gzBase 00004 // Description : Class definitions and macros for stack debugging aid 00005 // Author : Anders Modén 00006 // Product : GizmoBase 2.1.1 00007 // 00008 // Copyright © 2003- Saab Training Systems AB, Sweden 00009 // 00010 // NOTE: Gizmo3D is a high performance 3D Scene Graph and effect visualisation 00011 // C++ toolkit for Linux, Mac OS X, Windows (Win32) and IRIX® for 00012 // usage in Game or VisSim development. 00013 // 00014 // 00015 // Revision History... 00016 // 00017 // Who Date Description 00018 // 00019 // AMO 050211 Created file 00020 // 00021 //****************************************************************************** 00022 00023 #ifndef __GZ_STACK_INFO_H__ 00024 #define __GZ_STACK_INFO_H__ 00025 00032 #include "gzReference.h" 00033 #include "gzBase.h" 00034 #include "gzExceptions.h" 00035 #include "gzSerialize.h" 00036 00037 class gzStackItem : public gzReference 00038 { 00039 public: 00040 GZ_BASE_EXPORT virtual ~gzStackItem(){}; 00041 00042 gzString functionName; 00043 gzULong functionOffset; 00044 gzString fileName; 00045 gzULong lineNumber; 00046 gzString moduleName; 00047 00048 }; 00049 00050 class gzStackInfo 00051 { 00052 public: 00053 00054 GZ_BASE_EXPORT gzStackInfo(gzULong _minDepth=0,gzULong _maxDepth=100,gzBool _stripPaths=TRUE):minDepth(_minDepth),maxDepth(_maxDepth),stripPaths(_stripPaths){}; 00055 00056 gzRefList<gzStackItem> itemList; 00057 00058 gzULong minDepth; 00059 gzULong maxDepth; 00060 gzBool stripPaths; 00061 00062 }; 00063 00064 GZ_BASE_EXPORT gzBool gzGetStackInfo(gzStackInfo *info); 00065 00066 class GZ_BASE_EXPORT gzProgramExecution 00067 { 00068 public: 00069 00070 gzProgramExecution(); 00071 virtual ~gzProgramExecution(); 00072 00073 gzVoid checkBaseExceptions(); 00074 virtual gzVoid onProgramExecution()=0; 00075 virtual gzVoid onCrash(gzStackInfo *info); 00076 virtual gzVoid onBaseException(gzBaseError &error); 00077 00078 private: 00079 00080 gzSerializeAdapterFile *m_crashDump; 00081 }; 00082 00083 GZ_BASE_EXPORT gzVoid gzExecuteProgram(gzProgramExecution *instance); 00084 00085 00086 #endif