DbgSymSrv.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #pragma once
  2. #include "BeefySysLib/Common.h"
  3. #include "BeefySysLib/util/Array.h"
  4. #include "BeefySysLib/util/String.h"
  5. #include "BeefySysLib/util/CritSect.h"
  6. #include "BeefySysLib/FileStream.h"
  7. #include "Debugger.h"
  8. #include "DebugManager.h"
  9. namespace Beefy
  10. {
  11. class NetResult;
  12. }
  13. NS_BF_DBG_BEGIN
  14. class DbgSymSrv;
  15. class DbgSymRequest
  16. {
  17. public:
  18. Beefy::CritSect mCritSect;
  19. DbgSymSrv* mDbgSymSrv;
  20. Beefy::DbgSymSrvOptions mOptions;
  21. Beefy::String mModulePath;
  22. Beefy::String mPDBRequested;
  23. uint8 mWantGuid[16];
  24. int32 mWantAge;
  25. DWORD mLastUpdateTick;
  26. Beefy::String mOutPath;
  27. Beefy::FileStream mOutFile;
  28. Beefy::String mCurURL;
  29. Beefy::String mImagePath;
  30. Beefy::String mFinalPDBPath;
  31. Beefy::String mError;
  32. bool mFailed;
  33. bool mMayBeOld;
  34. bool mSearchingSymSrv;
  35. bool mCancelling;
  36. bool mInProcess;
  37. bool mIsPreCache;
  38. public:
  39. DbgSymRequest();
  40. ~DbgSymRequest();
  41. bool CheckPEFile(const Beefy::StringImpl& filePath, uint32 fileTime, int size);
  42. public:
  43. Beefy::String GetGuidString();
  44. Beefy::String GetPDBStoreDir();
  45. void Fail(const Beefy::StringImpl& error);
  46. bool CheckPDBData(const Beefy::StringImpl& path, uint8 outGuid[16], int32& outAge);
  47. bool Get(const Beefy::StringImpl& url, const Beefy::StringImpl& destPath, Beefy::NetResult** chainNetResult = NULL, bool ignoreSuccess = false);
  48. void SearchLocal(); // Only search for in specified path and in module path
  49. void SearchCache(); // Fast, single directory targeted check
  50. void SearchSymSrv(); // Slow - can access network
  51. Beefy::String SearchForImage(const Beefy::String& filePath, uint32 fileTime, int size); // Slow - can access network
  52. void Cancel();
  53. bool IsDone();
  54. };
  55. class DbgSymSrv
  56. {
  57. public:
  58. Beefy::Debugger* mDebugger;
  59. public:
  60. DbgSymSrv(Beefy::Debugger* debugger);
  61. void PreCacheImage(const Beefy::String& filePath, uint32 fileTime, int size);
  62. DbgSymRequest* CreateRequest(const Beefy::StringImpl& modulePath, const Beefy::StringImpl& pdbRequested, uint8 wantGuid[16], int32 wantAge);
  63. DbgSymRequest* CreateRequest();
  64. void ReleaseRequest(DbgSymRequest* dbgSymRequest);
  65. void Update();
  66. };
  67. NS_BF_DBG_END