diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp index b50a72b9c9d6f85a7b00e289b84be399c54d07c1..f0a9fc8beab088d18e1ff3a675b3b924a68693f4 100644 --- a/src/plugins/debugger/debuggeractions.cpp +++ b/src/plugins/debugger/debuggeractions.cpp @@ -473,6 +473,13 @@ DebuggerSettings::DebuggerSettings(QSettings *settings) insertItem(RegisterForPostMortem, item); #endif + item = new SavedAction(this); + item->setSettingsKey(debugModeGroup, QLatin1String("ProvideMoreStartOptions")); + item->setText(tr("Provide More Options to Start Debugging")); + item->setCheckable(true); + item->setDefaultValue(false); + insertItem(ProvideMoreStartModes, item); + item = new SavedAction(this); item->setSettingsKey(debugModeGroup, QLatin1String("AllPluginBreakpoints")); item->setDefaultValue(true); diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h index fadfce9b245945ed65dad7a6709e98668d9497d7..052f70b15a7c83deab33782a4dd05d263ad008fa 100644 --- a/src/plugins/debugger/debuggeractions.h +++ b/src/plugins/debugger/debuggeractions.h @@ -114,6 +114,7 @@ enum DebuggerActionCode UseAddressInStackView, RegisterForPostMortem, + ProvideMoreStartModes, // Gdb LoadGdbInit, diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 320635033c8703177a00d0e8596e126d5d434231..0a142228cbf1a920e24c63993583e39878a7ed95 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -518,7 +518,6 @@ public: } }; - /////////////////////////////////////////////////////////////////////// // // Misc @@ -670,6 +669,14 @@ public slots: m_returnWindow->header()->resizeSection(section, newSize); } + void setExpertMode(bool on) + { + m_startLocalProcessAction->setVisible(on); + m_attachToRemoteServerAction->setVisible(on); + m_startRemoteProcessAction->setVisible(on); + m_startRemoteServerAction->setVisible(on); + } + void sourceFilesDockToggled(bool on) { if (on && m_currentEngine->state() == InferiorStopOk) @@ -1039,7 +1046,7 @@ public: Utils::ProxyAction *m_hiddenStopAction; QAction *m_startAction; QAction *m_debugWithoutDeployAction; - QAction *m_startExternalProcessAction; + QAction *m_startLocalProcessAction; QAction *m_startRemoteProcessAction; QAction *m_startRemoteServerAction; QAction *m_attachToRemoteProcessAction; @@ -1047,7 +1054,7 @@ public: QAction *m_attachToRemoteServerAction; QAction *m_startRemoteCdbAction; QAction *m_startRemoteLldbAction; - QAction *m_attachExternalAction; + QAction *m_attachToLocalProcessAction; QAction *m_attachToCoreAction; QAction *m_detachAction; QAction *m_continueAction; @@ -1160,14 +1167,14 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(DebuggerPlugin *plugin) : m_reverseToolButton = 0; m_startAction = 0; m_debugWithoutDeployAction = 0; - m_startExternalProcessAction = 0; + m_startLocalProcessAction = 0; m_startRemoteProcessAction = 0; m_attachToRemoteServerAction = 0; - //m_attachToRemoteProcessAction = 0; + m_attachToRemoteProcessAction = 0; m_attachToQmlPortAction = 0; m_startRemoteCdbAction = 0; m_startRemoteLldbAction = 0; - m_attachExternalAction = 0; + m_attachToLocalProcessAction = 0; m_attachToCoreAction = 0; m_detachAction = 0; @@ -2181,13 +2188,13 @@ void DebuggerPluginPrivate::setInitialState() m_reverseDirectionAction->setEnabled(false); m_toolTipManager->closeAllToolTips(); - m_startExternalProcessAction->setEnabled(true); - m_attachExternalAction->setEnabled(true); + m_startLocalProcessAction->setEnabled(true); + m_attachToLocalProcessAction->setEnabled(true); m_attachToQmlPortAction->setEnabled(true); m_attachToCoreAction->setEnabled(true); m_startRemoteProcessAction->setEnabled(true); m_attachToRemoteServerAction->setEnabled(true); - //m_attachToRemoteProcessAction->setEnabled(true); + m_attachToRemoteProcessAction->setEnabled(true); m_detachAction->setEnabled(false); m_watchAction1->setEnabled(true); @@ -2306,9 +2313,9 @@ void DebuggerPluginPrivate::updateState(DebuggerEngine *engine) m_hiddenStopAction->setAction(m_undisturbableAction); } - m_startExternalProcessAction->setEnabled(true); + m_startLocalProcessAction->setEnabled(true); m_attachToQmlPortAction->setEnabled(true); - m_attachExternalAction->setEnabled(true); + m_attachToLocalProcessAction->setEnabled(true); m_attachToCoreAction->setEnabled(true); m_startRemoteProcessAction->setEnabled(true); m_attachToRemoteServerAction->setEnabled(true); @@ -2859,7 +2866,6 @@ void DebuggerPluginPrivate::extensionsInitialized() const Context globalcontext(CC::C_GLOBAL); const Context cppDebuggercontext(C_CPPDEBUGGER); - const Context qmlDebuggerContext(C_QMLDEBUGGER); const Context cppeditorcontext(CppEditor::Constants::C_CPPEDITOR); m_startIcon = QIcon(_(":/debugger/images/debugger_start_small.png")); @@ -3059,11 +3065,11 @@ void DebuggerPluginPrivate::extensionsInitialized() connect(act, SIGNAL(triggered()), this, SLOT(debugProject())); act = m_debugWithoutDeployAction = new QAction(this); - act->setText(tr("Debug Without Deployment")); + act->setText(tr("Start Debugging Without Deployment")); connect(act, SIGNAL(triggered()), this, SLOT(debugProjectWithoutDeploy())); // Handling of external applications. - act = m_startExternalProcessAction = new QAction(this); + act = m_startLocalProcessAction = new QAction(this); act->setText(tr("Start and Debug External Application...")); connect(act, SIGNAL(triggered()), SLOT(startExternalApplication())); @@ -3073,12 +3079,12 @@ void DebuggerPluginPrivate::extensionsInitialized() connect(act, SIGNAL(triggered()), SLOT(startRemoteEngine())); #endif - act = m_attachExternalAction = new QAction(this); - act->setText(tr("Attach to Running External Application...")); + act = m_attachToLocalProcessAction = new QAction(this); + act->setText(tr("Attach to Running Local Application...")); connect(act, SIGNAL(triggered()), SLOT(attachExternalApplication())); act = m_attachToCoreAction = new QAction(this); - act->setText(tr("Attach to Core...")); + act->setText(tr("Load Core File...")); connect(act, SIGNAL(triggered()), SLOT(attachCore())); act = m_startRemoteProcessAction = new QAction(this); @@ -3141,15 +3147,15 @@ void DebuggerPluginPrivate::extensionsInitialized() cmd->setAttribute(Command::CA_Hide); mstart->addAction(cmd, CC::G_DEFAULT_ONE); - cmd = am->registerAction(m_attachExternalAction, - "Debugger.AttachExternal", globalcontext); + cmd = am->registerAction(m_attachToLocalProcessAction, + "Debugger.AttachToLocalProcess", globalcontext); cmd->setAttribute(Command::CA_Hide); mstart->addAction(cmd, Constants::G_START_LOCAL); - cmd = am->registerAction(m_startExternalProcessAction, - "Debugger.StartExternal", globalcontext); + cmd = am->registerAction(m_startLocalProcessAction, + "Debugger.StartLocalProcess", globalcontext); cmd->setAttribute(Command::CA_Hide); - mstart->addAction(cmd, Constants::G_START_LOCAL); + mstart->addAction(cmd, Debugger::Constants::G_START_LOCAL); cmd = am->registerAction(m_attachToCoreAction, "Debugger.AttachCore", globalcontext); @@ -3164,12 +3170,12 @@ void DebuggerPluginPrivate::extensionsInitialized() cmd = am->registerAction(m_startRemoteProcessAction, "Debugger.StartRemoteProcess", globalcontext); cmd->setAttribute(Command::CA_Hide); - mstart->addAction(cmd, Constants::G_AUTOMATIC_REMOTE); + mstart->addAction(cmd, Constants::G_MANUAL_REMOTE); cmd = am->registerAction(m_startRemoteServerAction, "Debugger.StartRemoteServer", globalcontext); cmd->setDefaultText(tr("Start Gdbserver")); - mstart->addAction(cmd, Debugger::Constants::G_MANUAL_REMOTE); + mstart->addAction(cmd, Constants::G_MANUAL_REMOTE); cmd = am->registerAction(m_attachToRemoteProcessAction, "Debugger.AttachToRemoteProcess", globalcontext); @@ -3465,6 +3471,10 @@ void DebuggerPluginPrivate::extensionsInitialized() m_watchersWindow->setVisible(false); m_returnWindow->setVisible(false); + connect(action(ProvideMoreStartModes), SIGNAL(toggled(bool)), + SLOT(setExpertMode(bool))); + setExpertMode(boolSetting(ProvideMoreStartModes)); + // time gdb -i mi -ex 'b debuggerplugin.cpp:800' -ex r -ex q bin/qtcreator.bin if (!m_scheduledStarts.isEmpty()) QTimer::singleShot(0, this, SLOT(runScheduled())); diff --git a/src/plugins/debugger/gdb/gdboptionspage.cpp b/src/plugins/debugger/gdb/gdboptionspage.cpp index 239626e85e3081985b009ffa08b4abc2284b7ece..6f5abc4a9c423c06589a38b3b4e9e80f3e1bd81e 100644 --- a/src/plugins/debugger/gdb/gdboptionspage.cpp +++ b/src/plugins/debugger/gdb/gdboptionspage.cpp @@ -68,6 +68,7 @@ public: QCheckBox *checkBoxLoadGdbInit; QLabel *labelDangerous; QCheckBox *checkBoxTargetAsync; + QCheckBox *checkBoxProvideMoreStartModes; QCheckBox *checkBoxAutoEnrichParameters; QCheckBox *checkBoxBreakOnWarning; QCheckBox *checkBoxBreakOnFatal; @@ -144,6 +145,10 @@ public: "This allows or inhibits reading the user's default\n" ".gdbinit file on debugger startup.")); + checkBoxProvideMoreStartModes = new QCheckBox(groupBoxGeneral); + checkBoxProvideMoreStartModes->setText(GdbOptionsPage::tr( + "Show more start modes in the Debug->Start Debugging menu")); + labelDangerous = new QLabel(GdbOptionsPage::tr( "The options below should be used with care.")); @@ -211,6 +216,8 @@ public: formLayout->addRow(checkBoxAdjustBreakpointLocations); formLayout->addRow(checkBoxUseDynamicType); formLayout->addRow(checkBoxLoadGdbInit); + formLayout->addRow(checkBoxProvideMoreStartModes); + formLayout->addRow(new QLabel(QString())); formLayout->addRow(labelDangerous); formLayout->addRow(checkBoxTargetAsync); formLayout->addRow(checkBoxAutoEnrichParameters); @@ -286,6 +293,8 @@ QWidget *GdbOptionsPage::createPage(QWidget *parent) m_ui->checkBoxUseDynamicType); m_group.insert(debuggerCore()->action(TargetAsync), m_ui->checkBoxTargetAsync); + m_group.insert(debuggerCore()->action(ProvideMoreStartModes), + m_ui->checkBoxProvideMoreStartModes); m_group.insert(debuggerCore()->action(AdjustBreakpointLocations), m_ui->checkBoxAdjustBreakpointLocations); m_group.insert(debuggerCore()->action(BreakOnWarning), @@ -316,6 +325,7 @@ QWidget *GdbOptionsPage::createPage(QWidget *parent) << sep << m_ui->groupBoxGeneral->title() << sep << m_ui->checkBoxLoadGdbInit->text() << sep << m_ui->checkBoxTargetAsync->text() + << sep << m_ui->checkBoxProvideMoreStartModes->text() << sep << m_ui->checkBoxUseDynamicType->text() << sep << m_ui->labelGdbWatchdogTimeout->text() << sep << m_ui->checkBoxEnableReverseDebugging->text()