#pragma once #include "BaseProcess.h" class CPDBProcess : public CBaseProcess { public: enum eFUNDTY { eLUFAILED = 0x0 , eLUMOD = 0x1 , eLUSYM = 0x2 , eLULINE = 0x4 }; private: DWORD dwLoadAddress_; DWORD dwCharacteristics_; HANDLE HandlePdb_; LOADED_IMAGE LoadImageFile_; IMAGEHLP_MODULE64 ImageModuleInfo_; char pdbprocess_File_Name_[256]; CString m_szSearchPath; CString FullFileName_; public: CPDBProcess(void); virtual ~CPDBProcess(void); public: bool LoadImageFile(const TCHAR* ImageFile); int AddressInfo(DWORD dwAddress, CString& strModule, IMAGEHLP_SYMBOL& cImageSymbol, DWORD dwFnDispl, IMAGEHLP_LINE& cImageLine, DWORD dwSrcDispl,sExceptionInfomation& ExceptionInfo ); public: virtual void OnInitation(); virtual bool LoadFile(const TCHAR* SymbolName); virtual void Clean(); virtual bool OnSearch(DWORD ExceptionAddr , sExceptionInfomation& ExceptionInfo ); virtual bool OnSearch(const char* ExceptionAddr,sExceptionInfomation& ExceptionInfo); virtual bool StackWalker(void* DumpProcess,std::vector stackName); public: BOOL GetModules ( LPCTSTR pModuleName, CMapStringToPtr& ModuleList ); BOOL SearchForModule ( CString& fullpath ) ; void BuildSearchPathString ( void ) ; };