89 lines
2.4 KiB
C++
89 lines
2.4 KiB
C++
#pragma once
|
|
#include "BaseProcess.h"
|
|
|
|
class CMapProcess : public CBaseProcess
|
|
{
|
|
public:
|
|
struct sFuntionInfo
|
|
{
|
|
TCHAR FuntionName[256];
|
|
TCHAR ObjectFileName[256];
|
|
DWORD FuntionAddress;
|
|
bool HeaderFile;
|
|
|
|
sFuntionInfo()
|
|
{
|
|
memset(FuntionName,0,sizeof(TCHAR)*256);
|
|
memset(ObjectFileName,0,sizeof(TCHAR)*256);
|
|
FuntionAddress = 0;
|
|
HeaderFile = false;
|
|
}
|
|
};
|
|
|
|
struct sLineAndAddressEntity
|
|
{
|
|
DWORD LineAddress;
|
|
UINT SourceLine;
|
|
|
|
sLineAndAddressEntity()
|
|
{
|
|
LineAddress = 0x00000;
|
|
SourceLine = 0;
|
|
}
|
|
};
|
|
|
|
struct sLineInfo
|
|
{
|
|
TCHAR ObjectFileName[256];
|
|
TCHAR SourceFileName[256];
|
|
std::vector<sLineAndAddressEntity> vAddressLineEntityList;
|
|
|
|
sLineInfo()
|
|
{
|
|
memset(ObjectFileName,0,sizeof(TCHAR)*256);
|
|
memset(SourceFileName,0,sizeof(TCHAR)*256);
|
|
}
|
|
|
|
~sLineInfo()
|
|
{
|
|
vAddressLineEntityList.clear();
|
|
}
|
|
};
|
|
|
|
private:
|
|
DWORD LoadBaseAddress_;
|
|
std::vector<sFuntionInfo> FuntionList_;
|
|
std::vector<sLineInfo> LineinfoList_;
|
|
|
|
public:
|
|
CMapProcess(void);
|
|
virtual ~CMapProcess(void);
|
|
|
|
public:
|
|
bool ReadAddress(FILE* fp);
|
|
bool ReadSourceLine(FILE* fp);
|
|
|
|
bool GetLoadBaseAddress(FILE* fp);
|
|
|
|
private:
|
|
|
|
bool GetCutFunctionString(const char* pStringLine, char* pString, size_t stringLen,
|
|
UINT& CutStringCount);
|
|
|
|
bool GetCutAddressString(const char* pStringLine, DWORD& Address, UINT& CutStringCount);
|
|
bool GetLineObjectFileName(const char* pStringLine, char* pString, size_t stringLen,
|
|
UINT& CutStringCount);
|
|
bool GetLineSourceName(const char* pStringLine, char* pString, size_t stringLen,
|
|
UINT& CutStringCount);
|
|
bool GetLineAndAddress(const char* pStringLine, int numCount,
|
|
sLineAndAddressEntity& LineEntity);
|
|
|
|
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);
|
|
|
|
};
|