2019-08-23 11:56:54 -07:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "DebugCommon.h"
|
|
|
|
#include "BeefySysLib/util/PerfTimer.h"
|
|
|
|
#include "BeefySysLib/util/CritSect.h"
|
|
|
|
#include "BeefySysLib/util/Dictionary.h"
|
|
|
|
#include "Debugger.h"
|
|
|
|
#include <queue>
|
|
|
|
|
|
|
|
NS_BF_BEGIN
|
|
|
|
|
|
|
|
class Debugger;
|
|
|
|
class DebugVisualizers;
|
|
|
|
class DbgMiniDump;
|
|
|
|
class NetManager;
|
|
|
|
|
|
|
|
class DbgSymSrvOptions
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
String mCacheDir;
|
|
|
|
String mSourceServerCacheDir;
|
|
|
|
Array<String> mSymbolServers;
|
|
|
|
BfSymSrvFlags mFlags;
|
|
|
|
|
|
|
|
DbgSymSrvOptions()
|
|
|
|
{
|
|
|
|
mFlags = BfSymSrvFlag_None;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
enum BfStepFilterKind
|
|
|
|
{
|
|
|
|
BfStepFilterKind_Default = 0,
|
|
|
|
BfStepFilterKind_Filtered = 1,
|
|
|
|
BfStepFilterKind_NotFiltered = 2
|
|
|
|
};
|
|
|
|
|
|
|
|
class StepFilter
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
BfStepFilterKind mFilterKind;
|
|
|
|
|
|
|
|
public:
|
|
|
|
StepFilter()
|
|
|
|
{
|
|
|
|
// Set global / local
|
2022-07-26 13:27:03 -04:00
|
|
|
mFilterKind = BfStepFilterKind_Filtered;
|
2019-08-23 11:56:54 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
bool IsFiltered(bool defaultValue)
|
|
|
|
{
|
|
|
|
switch (mFilterKind)
|
|
|
|
{
|
|
|
|
case BfStepFilterKind_Default:
|
|
|
|
return defaultValue;
|
|
|
|
case BfStepFilterKind_Filtered:
|
|
|
|
return true;
|
|
|
|
default:
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class DebugManager
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
Debugger* mDebugger32;
|
2022-07-26 13:27:03 -04:00
|
|
|
Debugger* mDebugger64;
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
CritSect mCritSect;
|
|
|
|
Dictionary<String, StepFilter> mStepFilters;
|
2022-07-26 13:27:03 -04:00
|
|
|
int mStepFilterVersion;
|
2019-08-23 11:56:54 -07:00
|
|
|
std::deque<String> mOutMessages;
|
|
|
|
|
|
|
|
DebugVisualizers* mDebugVisualizers;
|
|
|
|
DwDisplayInfo mDefaultDisplayInfo;
|
|
|
|
Dictionary<String, DwDisplayInfo> mDisplayInfos;
|
2023-02-20 14:45:29 -05:00
|
|
|
Dictionary<String, String> mSourcePathRemap;
|
2019-08-23 11:56:54 -07:00
|
|
|
bool mStepOverExternalFiles;
|
|
|
|
|
|
|
|
NetManager* mNetManager;
|
|
|
|
DbgSymSrvOptions mSymSrvOptions;
|
|
|
|
|
|
|
|
public:
|
|
|
|
DebugManager();
|
|
|
|
~DebugManager();
|
|
|
|
|
|
|
|
void OutputMessage(const StringImpl& msg);
|
|
|
|
void OutputRawMessage(const StringImpl& msg);
|
|
|
|
void SetSourceServerCacheDir();
|
|
|
|
};
|
|
|
|
|
|
|
|
extern DebugManager* gDebugManager;
|
|
|
|
|
|
|
|
extern Debugger* gDebugger;
|
|
|
|
extern PerfManager* gDbgPerfManager;
|
|
|
|
|
|
|
|
Debugger* CreateDebugger32(DebugManager* debugManager, DbgMiniDump* miniDump);
|
|
|
|
Debugger* CreateDebugger64(DebugManager* debugManager, DbgMiniDump* miniDump);
|
|
|
|
|
|
|
|
NS_BF_END
|