bool cbDebuggerPlugin::ToolMenuEnabled() const { cbProject* prj = Manager::Get()->GetProjectManager()->GetActiveProject(); bool en = (prj && !prj->GetCurrentlyCompilingTarget()) || IsAttachedToProcess(); return IsRunning() && en; }
void LLDBConnector::Stop() { if(IsAttachedToProcess()) { Detach(); } else { LLDBCommand command; command.SetCommandType(kCommandStop); SendCommand(command); } }
bool cbDebuggerPlugin::EnsureBuildUpToDate(StartType startType) { m_StartType = startType; m_WaitingCompilerToFinish = false; // compile project/target (if not attaching to a PID) if (!IsAttachedToProcess()) { // should we build to make sure project is up-to-date? if (!cbDebuggerCommonConfig::GetFlag(cbDebuggerCommonConfig::AutoBuild)) { m_WaitingCompilerToFinish = false; m_pCompiler = nullptr; return true; } // make sure the target is compiled PluginsArray plugins = Manager::Get()->GetPluginManager()->GetCompilerOffers(); if (plugins.GetCount()) m_pCompiler = (cbCompilerPlugin*)plugins[0]; else m_pCompiler = nullptr; if (m_pCompiler) { // is the compiler already running? if (m_pCompiler->IsRunning()) { Log(_("Compiler in use...")); Log(_("Aborting debugging session")); cbMessageBox(_("The compiler is currently in use. Aborting debugging session..."), _("Compiler running"), wxICON_WARNING); return false; } Log(_("Building to ensure sources are up-to-date")); m_WaitingCompilerToFinish = true; m_pCompiler->Build(); // now, when the build is finished, DoDebug will be launched in OnCompilerFinished() } } return true; }