| 26 | } |
| 27 | |
| 28 | bool DebugManager::initialize(dpfservice::WindowService *windowService, |
| 29 | dpfservice::DebuggerService *debuggerService) |
| 30 | { |
| 31 | currentDebugger = new DAPDebugger(this); |
| 32 | debuggers.insert("dap", currentDebugger); |
| 33 | runner = new Runner(this); |
| 34 | |
| 35 | menuManager.reset(new MenuManager()); |
| 36 | menuManager->initialize(windowService); |
| 37 | |
| 38 | auto reverseDbg = new ReverseDebugger(this); |
| 39 | connect(reverseDbg, &ReverseDebugger::startReplay, this, &DebugManager::rrReplay); |
| 40 | |
| 41 | connect(currentDebugger, &AbstractDebugger::runStateChanged, this, &DebugManager::handleRunStateChanged); |
| 42 | |
| 43 | // bind debug services |
| 44 | using namespace std::placeholders; |
| 45 | if (!debuggerService->runCoredump) { |
| 46 | debuggerService->runCoredump = std::bind(&DebugManager::runCoredump, this, _1, _2, _3); |
| 47 | } |
| 48 | |
| 49 | if (!debuggerService->registerDebugger) { |
| 50 | debuggerService->registerDebugger = std::bind(&DebugManager::registerDebugger, this, _1, _2); |
| 51 | } |
| 52 | |
| 53 | if (!debuggerService->getDebugState) { |
| 54 | debuggerService->getDebugState = std::bind(&DebugManager::getRunState, this); |
| 55 | } |
| 56 | |
| 57 | return true; |
| 58 | } |
| 59 | |
| 60 | DWidget *DebugManager::getStackPane() const |
| 61 | { |