diff --git a/src/plugins/debugger/debuggerdialogs.cpp b/src/plugins/debugger/debuggerdialogs.cpp index 3f07315ef8792876495d434931d770c9b14e41cf..f4677bbcb58e6be25f1115e57dd36df8816a3236 100644 --- a/src/plugins/debugger/debuggerdialogs.cpp +++ b/src/plugins/debugger/debuggerdialogs.cpp @@ -516,6 +516,8 @@ StartExternalDialog::StartExternalDialog(QWidget *parent) m_ui->execFile->setExpectedKind(Utils::PathChooser::File); m_ui->execFile->setPromptDialogTitle(tr("Select Executable")); m_ui->buttonBox->button(QDialogButtonBox::Ok)->setDefault(true); + m_ui->workingDirectory->setExpectedKind(Utils::PathChooser::Directory); + m_ui->workingDirectory->setPromptDialogTitle(tr("Select Working Directory")); //execLabel->setHidden(false); //execEdit->setHidden(false); @@ -543,6 +545,16 @@ QString StartExternalDialog::executableFile() const return m_ui->execFile->path(); } +void StartExternalDialog::setWorkingDirectory(const QString &str) +{ + m_ui->workingDirectory->setPath(str); +} + +QString StartExternalDialog::workingDirectory() const +{ + return m_ui->workingDirectory->path(); +} + void StartExternalDialog::setExecutableArguments(const QString &str) { m_ui->argsEdit->setText(str); diff --git a/src/plugins/debugger/debuggerdialogs.h b/src/plugins/debugger/debuggerdialogs.h index 13ad67358f8236aa188471d32523048453458e9c..1cc868af4fe37f0ff6f7204a1c713e2a38cd1ff6 100644 --- a/src/plugins/debugger/debuggerdialogs.h +++ b/src/plugins/debugger/debuggerdialogs.h @@ -116,15 +116,17 @@ public: explicit AttachTcfDialog(QWidget *parent); ~AttachTcfDialog(); + QString remoteChannel() const; void setRemoteChannel(const QString &host); + + QString remoteArchitecture() const; void setRemoteArchitecture(const QString &arch); void setRemoteArchitectures(const QStringList &arches); - QString remoteChannel() const; - QString remoteArchitecture() const; - void setServerStartScript(const QString &scriptName); + QString serverStartScript() const; - void setUseServerStartScript(bool on); bool useServerStartScript() const; + void setUseServerStartScript(bool on); + void setServerStartScript(const QString &scriptName); private slots: void updateState(); @@ -141,11 +143,15 @@ public: explicit StartExternalDialog(QWidget *parent); ~StartExternalDialog(); + QString executableFile() const; void setExecutableFile(const QString &executable); - void setExecutableArguments(const QString &args); - QString executableFile() const; QString executableArguments() const; + void setExecutableArguments(const QString &args); + + QString workingDirectory() const; + void setWorkingDirectory(const QString &str); + bool breakAtMain() const; private: @@ -160,21 +166,26 @@ public: explicit StartRemoteDialog(QWidget *parent); ~StartRemoteDialog(); - void setRemoteChannel(const QString &host); - void setRemoteArchitecture(const QString &arch); - void setRemoteArchitectures(const QStringList &arches); - void setLocalExecutable(const QString &executable); - void setDebugger(const QString &debugger); QString localExecutable() const; + void setLocalExecutable(const QString &executable); + QString remoteChannel() const; + void setRemoteChannel(const QString &host); + QString remoteArchitecture() const; - void setServerStartScript(const QString &scriptName); - QString serverStartScript() const; - void setUseServerStartScript(bool on); + void setRemoteArchitecture(const QString &arch); + void setRemoteArchitectures(const QStringList &arches); + bool useServerStartScript() const; - void setSysRoot(const QString &sysRoot); + void setUseServerStartScript(bool on); + QString serverStartScript() const; + void setServerStartScript(const QString &scriptName); + QString sysRoot() const; + void setSysRoot(const QString &sysRoot); + QString debugger() const; + void setDebugger(const QString &debugger); private slots: void updateState(); diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index 064430b12c526b968f4f7c1b5f1336f28deb4540..39d3d30855ec551dc3f5d771f19697ff72d97ebd 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -181,7 +181,7 @@ DEBUGGER_EXPORT QDebug operator<<(QDebug str, const DebuggerStartParameters &p) nospace << "executable=" << p.executable << " coreFile=" << p.coreFile << " processArgs=" << p.processArgs.join(sep) << " environment=<" << p.environment.size() << " variables>" - << " workingDir=" << p.workingDir << " buildDir=" << p.buildDir + << " workingDir=" << p.workingDirectory << " buildDir=" << p.buildDirectory << " attachPID=" << p.attachPID << " useTerminal=" << p.useTerminal << " remoteChannel=" << p.remoteChannel << " remoteArchitecture=" << p.remoteArchitecture @@ -2068,7 +2068,7 @@ void DebuggerManager::runTest(const QString &fileName) { d->m_startParameters->executable = fileName; d->m_startParameters->processArgs = QStringList() << "--run-debuggee"; - d->m_startParameters->workingDir.clear(); + d->m_startParameters->workingDirectory.clear(); //startNewDebugger(StartInternal); } diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h index 8b15b6487f4454c958c2341e09c897efece4ade9..5d3f03fe390c023805357139c679a4a8a284ce1a 100644 --- a/src/plugins/debugger/debuggermanager.h +++ b/src/plugins/debugger/debuggermanager.h @@ -111,8 +111,8 @@ public: QString coreFile; QStringList processArgs; QStringList environment; - QString workingDir; - QString buildDir; + QString workingDirectory; + QString buildDirectory; qint64 attachPID; bool useTerminal; QString crashParameter; // for AttachCrashedExternal diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 0418a1830e1993686fe36520cf4897f2e78f473f..1dc865804a03700ed705bd4d76b1beb7d39c854d 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -1401,6 +1401,8 @@ void DebuggerPlugin::startExternalApplication() configValue(_("LastExternalExecutableFile")).toString()); dlg.setExecutableArguments( configValue(_("LastExternalExecutableArguments")).toString()); + dlg.setWorkingDirectory( + configValue(_("LastExternalWorkingDirectory")).toString()); if (dlg.exec() != QDialog::Accepted) return; @@ -1408,8 +1410,11 @@ void DebuggerPlugin::startExternalApplication() dlg.executableFile()); setConfigValue(_("LastExternalExecutableArguments"), dlg.executableArguments()); + setConfigValue(_("LastExternalWorkingDirectory"), + dlg.workingDirectory()); sp->executable = dlg.executableFile(); sp->startMode = StartExternal; + sp->workingDirectory = dlg.workingDirectory(); if (!dlg.executableArguments().isEmpty()) sp->processArgs = dlg.executableArguments().split(QLatin1Char(' ')); diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index d5739c46b6f36d3ea5a6eb691af012e7bd0da607..450c6ce649250bb53b97a85aca4c79df00fd5fb0 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -118,7 +118,7 @@ DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager, m_startParameters->startMode = StartInternal; m_startParameters->executable = runConfiguration->executable(); m_startParameters->environment = runConfiguration->environment().toStringList(); - m_startParameters->workingDir = runConfiguration->workingDirectory(); + m_startParameters->workingDirectory = runConfiguration->workingDirectory(); m_startParameters->processArgs = runConfiguration->commandLineArguments(); switch (m_startParameters->toolChainType) { @@ -130,7 +130,7 @@ DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager, break; } if (runConfiguration->target()->project()) { - m_startParameters->buildDir = + m_startParameters->buildDirectory = runConfiguration->target()->activeBuildConfiguration()->buildDirectory(); } m_startParameters->useTerminal = diff --git a/src/plugins/debugger/gdb/localplaingdbadapter.cpp b/src/plugins/debugger/gdb/localplaingdbadapter.cpp index 7c370cb9467e0cfd3986b12ae49d20db414d890b..a5f168f081a1c76588af74fbd81f16b943b6d9ab 100644 --- a/src/plugins/debugger/gdb/localplaingdbadapter.cpp +++ b/src/plugins/debugger/gdb/localplaingdbadapter.cpp @@ -79,8 +79,8 @@ void LocalPlainGdbAdapter::startAdapter() } gdbArgs.append(_("--tty=") + m_outputCollector.serverName()); - if (!startParameters().workingDir.isEmpty()) - m_gdbProc.setWorkingDirectory(startParameters().workingDir); + if (!startParameters().workingDirectory.isEmpty()) + m_gdbProc.setWorkingDirectory(startParameters().workingDirectory); if (!startParameters().environment.isEmpty()) m_gdbProc.setEnvironment(startParameters().environment); diff --git a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp index 4bddbbe5786d6de779dd8253eb19289c18d57dd4..77443ad75382b167c11f5df5289cfd4b62dd451a 100644 --- a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp +++ b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp @@ -50,8 +50,8 @@ void RemotePlainGdbAdapter::startAdapter() setState(AdapterStarting); debugMessage(QLatin1String("TRYING TO START ADAPTER")); - if (!startParameters().workingDir.isEmpty()) - m_gdbProc.setWorkingDirectory(startParameters().workingDir); + if (!startParameters().workingDirectory.isEmpty()) + m_gdbProc.setWorkingDirectory(startParameters().workingDirectory); if (!startParameters().environment.isEmpty()) m_gdbProc.setEnvironment(startParameters().environment); diff --git a/src/plugins/debugger/gdb/termgdbadapter.cpp b/src/plugins/debugger/gdb/termgdbadapter.cpp index ddb95c5559e41f8f6d1fb14a25d6097a3d8a5d8f..489a5791d8e7d6618a118527ac49f54f2c55fb93 100644 --- a/src/plugins/debugger/gdb/termgdbadapter.cpp +++ b/src/plugins/debugger/gdb/termgdbadapter.cpp @@ -91,7 +91,7 @@ void TermGdbAdapter::startAdapter() // m_stubProc.stop(); // m_stubProc.blockSignals(false); - m_stubProc.setWorkingDirectory(startParameters().workingDir); + m_stubProc.setWorkingDirectory(startParameters().workingDirectory); // Set environment + dumper preload. QStringList environment = startParameters().environment; m_stubProc.setEnvironment(environment); diff --git a/src/plugins/debugger/startexternaldialog.ui b/src/plugins/debugger/startexternaldialog.ui index 90ed85ac592adeccdd88461465e950874682ec1e..c3408136a4bedf4fe11fb3aa7ecc5fa753fe0711 100644 --- a/src/plugins/debugger/startexternaldialog.ui +++ b/src/plugins/debugger/startexternaldialog.ui @@ -48,6 +48,9 @@ </property> </widget> </item> + <item row="0" column="1"> + <widget class="Utils::PathChooser" name="execFile" native="true"/> + </item> <item row="1" column="0"> <widget class="QLabel" name="argLabel"> <property name="text"> @@ -58,17 +61,24 @@ <item row="1" column="1"> <widget class="QLineEdit" name="argsEdit"/> </item> - <item row="0" column="1"> - <widget class="Utils::PathChooser" name="execFile" native="true"/> + <item row="2" column="0"> + <widget class="QLabel" name="workingDirectoryLabel"> + <property name="text"> + <string>Working directory:</string> + </property> + </widget> </item> <item row="2" column="1"> + <widget class="Utils::PathChooser" name="workingDirectory" native="true"/> + </item> + <item row="3" column="1"> <widget class="QCheckBox" name="checkBoxBreakAtMain"> <property name="text"> <string/> </property> </widget> </item> - <item row="2" column="0"> + <item row="3" column="0"> <widget class="QLabel" name="labelBreakAtMain"> <property name="text"> <string>Break at 'main':</string>