debugger: let the user specify a working directory when starting a local

application
This commit is contained in:
hjk
2010-05-12 11:48:00 +02:00
parent 84f4193019
commit e65e011706
10 changed files with 67 additions and 29 deletions

View File

@@ -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);

View File

@@ -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);
QString executableArguments() const;
void setExecutableArguments(const QString &args);
QString executableFile() const;
QString executableArguments() const;
QString workingDirectory() const;
void setWorkingDirectory(const QString &str);
bool breakAtMain() const;
private:
@@ -160,21 +166,26 @@ public:
explicit StartRemoteDialog(QWidget *parent);
~StartRemoteDialog();
QString localExecutable() const;
void setLocalExecutable(const QString &executable);
QString remoteChannel() const;
void setRemoteChannel(const QString &host);
QString remoteArchitecture() const;
void setRemoteArchitecture(const QString &arch);
void setRemoteArchitectures(const QStringList &arches);
void setLocalExecutable(const QString &executable);
void setDebugger(const QString &debugger);
QString localExecutable() const;
QString remoteChannel() const;
QString remoteArchitecture() const;
void setServerStartScript(const QString &scriptName);
QString serverStartScript() const;
void setUseServerStartScript(bool on);
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();

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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(' '));

View File

@@ -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 =

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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>