Files
2022-10-26 12:25:11 +08:00

55 lines
1.5 KiB
C++

#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<CString> stackName);
public:
BOOL GetModules ( LPCTSTR pModuleName, CMapStringToPtr& ModuleList );
BOOL SearchForModule ( CString& fullpath ) ;
void BuildSearchPathString ( void ) ;
};