void PhpPlugin::OnXDebugDeleteAllBreakpoints(clDebugEvent& e) { e.Skip(); PHPEvent eventDelAllBP(wxEVT_PHP_DELETE_ALL_BREAKPOINTS); EventNotifier::Get()->AddPendingEvent(eventDelAllBP); }
void LLDBPlugin::OnDebugDeleteAllBreakpoints(clDebugEvent& event) { event.Skip(); m_connector.DeleteAllBreakpoints(); }
void LLDBPlugin::OnIsDebugger(clDebugEvent& event) { event.Skip(); // register us as a debugger event.GetStrings().Add(LLDB_DEBUGGER_NAME); }
void LLDBPlugin::OnDebugCanInteract(clDebugEvent& event) { CHECK_IS_LLDB_SESSION(); event.SetAnswer( m_connector.IsCanInteract() ); }
void LLDBPlugin::OnDebugIsRunning(clDebugEvent& event) { CHECK_IS_LLDB_SESSION(); event.SetAnswer( m_connector.IsRunning() ); }
void LLDBPlugin::OnDebugStart(clDebugEvent& event) { if ( event.GetDebuggerName() != LLDB_DEBUGGER_NAME ) { event.Skip(); return; } CL_DEBUG("LLDB: Initial working directory is restored to: " + ::wxGetCwd()); { // Get the executable to debug wxString errMsg; ProjectPtr pProject = WorkspaceST::Get()->FindProjectByName(event.GetProjectName(), errMsg); if ( !pProject ) { ::wxMessageBox(wxString() << _("Could not locate project: ") << event.GetProjectName(), "LLDB Debugger", wxICON_ERROR|wxOK|wxCENTER); return; } DirSaver ds; ::wxSetWorkingDirectory ( pProject->GetFileName().GetPath() ); // Load LLDB settings LLDBSettings settings; settings.Load(); BuildConfigPtr bldConf = WorkspaceST::Get()->GetProjBuildConf ( pProject->GetName(), wxEmptyString ); if ( !bldConf ) { ::wxMessageBox(wxString() << _("Could not locate the requested buid configuration"), "LLDB Debugger", wxICON_ERROR|wxOK|wxCENTER); return; } // Launch codelite-lldb now. // Choose wether we need to debug a local or remote target // Honour the project settings if ( bldConf->GetIsDbgRemoteTarget() ) { long nPort(wxNOT_FOUND); bldConf->GetDbgHostPort().ToCLong( &nPort ); settings.SetProxyIp( bldConf->GetDbgHostName() ); settings.SetProxyPort( nPort ); settings.EnableFlag( kLLDBOptionUseRemoteProxy, true ); } if ( !settings.IsUsingRemoteProxy() ) { // Not using a remote proxy, launch the debug server if ( !m_connector.LaunchLocalDebugServer() ) { return; } } // Determine the executable to debug, working directory and arguments EnvSetter env(NULL, NULL, pProject ? pProject->GetName() : wxString()); wxString exepath = bldConf->GetCommand(); wxString args; wxString wd; // Get the debugging arguments. if(bldConf->GetUseSeparateDebugArgs()) { args = bldConf->GetDebugArgs(); } else { args = bldConf->GetCommandArguments(); } wd = ::ExpandVariables ( bldConf->GetWorkingDirectory(), pProject, m_mgr->GetActiveEditor() ); exepath = ::ExpandVariables ( exepath, pProject, m_mgr->GetActiveEditor() ); { DirSaver ds; ::wxSetWorkingDirectory(wd); wxFileName execToDebug( exepath ); if ( execToDebug.IsRelative() ) { execToDebug.MakeAbsolute(); } ////////////////////////////////////////////////////////////////////// // Launch terminal for IO redirection ////////////////////////////////////////////////////////////////////// TerminateTerminal(); bool isWindows = wxPlatformInfo::Get().GetOperatingSystemId() & wxOS_WINDOWS; if ( !bldConf->IsGUIProgram() && !isWindows ) { ::LaunchTerminalForDebugger(execToDebug.GetFullPath(), m_terminalTTY, m_terminalPID); if ( m_terminalPID != wxNOT_FOUND ) { CL_DEBUG("Successfully launched terminal"); } else { // Failed to launch it... DoCleanup(); ::wxMessageBox(_("Failed to start terminal for debugger"), "CodeLite", wxICON_ERROR|wxOK|wxCENTER); return; } } CL_DEBUG("LLDB: Using executable : " + execToDebug.GetFullPath()); CL_DEBUG("LLDB: Working directory: " + ::wxGetCwd()); ////////////////////////////////////////////////////////////////////// // Initiate the connection to codelite-lldb ////////////////////////////////////////////////////////////////////// LLDBConnectReturnObject retObj; if ( m_connector.Connect(retObj, settings, 5) ) { // Get list of breakpoints and add them ( we will apply them later on ) BreakpointInfo::Vec_t gdbBps; m_mgr->GetAllBreakpoints(gdbBps); // remove all breakpoints from previous session m_connector.DeleteAllBreakpoints(); // apply the serialized breakpoints m_connector.AddBreakpoints( gdbBps ); // Setup pivot folder if needed SetupPivotFolder( retObj ); LLDBCommand startCommand; startCommand.FillEnvFromMemory(); // If the current platform is Windows, use the executable as it appears in the project settings startCommand.SetExecutable( isWindows ? exepath : execToDebug.GetFullPath() ); startCommand.SetCommandArguments( args ); // Since we called 'wxSetWorkingDirectory' earlier, wxGetCwd() should give use the // correct working directory for the debugger startCommand.SetWorkingDirectory( ::wxGetCwd() ); startCommand.SetRedirectTTY( m_terminalTTY ); m_connector.Start( startCommand ); } else { // Failed to connect, notify and perform cleanup DoCleanup(); wxString message; message << _("Could not connect to codelite-lldb at '") << (settings.IsUsingRemoteProxy() ? settings.GetTcpConnectString() : m_connector.GetConnectString()) << "'"; ::wxMessageBox(message, "CodeLite", wxICON_ERROR|wxOK|wxCENTER); return; } } } CL_DEBUG("LLDB: Working directory is restored to: " + ::wxGetCwd()); }
void LLDBPlugin::OnDebugEnableAllBreakpoints(clDebugEvent& event) { event.Skip(); }