MiniDumpDebugger.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #pragma once
  2. #include "WinDebugger.h"
  3. #include "DbgMiniDump.h"
  4. NS_BF_DBG_BEGIN
  5. class MiniDumpMemoryRegion
  6. {
  7. public:
  8. addr_target mAddress;
  9. intptr_target mAddressLength;
  10. void* mData;
  11. MiniDumpMemoryRegion* mNext;
  12. };
  13. class MiniDumpDebugger : public WinDebugger
  14. {
  15. public:
  16. DbgMiniDump* mMiniDump;
  17. Array<MappedFile*> mMappedFiles;
  18. DbgRadixMap<MiniDumpMemoryRegion*> mMemMap;
  19. BumpAllocator mAlloc;
  20. WdThreadInfo* mExceptionThread;
  21. uintptr mExceptionContextRVA;
  22. public:
  23. MiniDumpDebugger(DebugManager* debugManager, DbgMiniDump* miniDump);
  24. ~MiniDumpDebugger();
  25. void MapMemory(addr_target addr, void* data, intptr_target size);
  26. MappedFile* MapModule(COFF* dbgModule, const StringImpl& fileName);
  27. virtual bool PopulateRegisters(CPURegisters* registers) override;
  28. using WinDebugger::PopulateRegisters;
  29. virtual bool ReadMemory(intptr address, uint64 length, void* dest, bool isLocal) override;
  30. virtual bool WriteMemory(intptr address, void* src, uint64 length) override;
  31. virtual bool IsOnDemandDebugger() override { return true; }
  32. virtual bool IsMiniDumpDebugger() override { return true; }
  33. virtual void ContinueDebugEvent() { }
  34. virtual Breakpoint* CreateBreakpoint(const StringImpl& fileName, int lineNum, int wantColumn, int instrOffset) { return NULL; }
  35. virtual Breakpoint* CreateMemoryBreakpoint(intptr addr, int byteCount, const StringImpl& addrType) { return NULL; }
  36. virtual Breakpoint* CreateSymbolBreakpoint(const StringImpl& symbolName) { return NULL; }
  37. virtual Breakpoint* CreateAddressBreakpoint(intptr address) { return NULL; }
  38. virtual void BreakAll() override {};
  39. virtual bool TryRunContinue() override { return false; }
  40. virtual void StepInto(bool inAssembly) override { }
  41. virtual void StepIntoSpecific(intptr addr) override { }
  42. virtual void StepOver(bool inAssembly) override { }
  43. virtual void StepOut(bool inAssembly) override { }
  44. virtual void SetNextStatement(bool inAssembly, const StringImpl& fileName, int64 lineNumOrAsmAddr, int wantColumn) { }
  45. virtual Profiler* StartProfiling() { return NULL; }
  46. virtual Profiler* PopProfiler() { return NULL; }
  47. };
  48. NS_BF_DBG_END