forked from qt-creator/qt-creator
Debugger: Fix Attach to Unstarted Application.
Use paths with native directory separator when comparing application names. Also disable the "Continue on Attach" combo box when a kit with a cdb is selected. The cdbengine always continues after an attach. Task-number: QTCREATORBUG-13517 Change-Id: I3dd9cca98f9b4255cafc318836377d802413eace Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
This commit is contained in:
@@ -31,6 +31,7 @@
|
|||||||
#include "unstartedappwatcherdialog.h"
|
#include "unstartedappwatcherdialog.h"
|
||||||
|
|
||||||
#include "debuggerdialogs.h"
|
#include "debuggerdialogs.h"
|
||||||
|
#include "debuggerkitinformation.h"
|
||||||
|
|
||||||
#include <utils/pathchooser.h>
|
#include <utils/pathchooser.h>
|
||||||
|
|
||||||
@@ -151,6 +152,9 @@ UnstartedAppWatcherDialog::UnstartedAppWatcherDialog(QWidget *parent)
|
|||||||
connect(m_pathChooser, SIGNAL(pathChanged(QString)), this, SLOT(stopAndCheckExecutable()));
|
connect(m_pathChooser, SIGNAL(pathChanged(QString)), this, SLOT(stopAndCheckExecutable()));
|
||||||
connect(m_closePushButton, SIGNAL(clicked()), this, SLOT(reject()));
|
connect(m_closePushButton, SIGNAL(clicked()), this, SLOT(reject()));
|
||||||
connect(&m_timer, SIGNAL(timeout()), this, SLOT(findProcess()));
|
connect(&m_timer, SIGNAL(timeout()), this, SLOT(findProcess()));
|
||||||
|
connect(m_kitChooser, &ProjectExplorer::KitChooser::currentIndexChanged,
|
||||||
|
this, &UnstartedAppWatcherDialog::kitChanged);
|
||||||
|
kitChanged();
|
||||||
|
|
||||||
setWaitingState(checkExecutableString() ? NotWatchingState : InvalidWacherState);
|
setWaitingState(checkExecutableString() ? NotWatchingState : InvalidWacherState);
|
||||||
}
|
}
|
||||||
@@ -224,10 +228,10 @@ void UnstartedAppWatcherDialog::startStopTimer(bool start)
|
|||||||
|
|
||||||
void UnstartedAppWatcherDialog::findProcess()
|
void UnstartedAppWatcherDialog::findProcess()
|
||||||
{
|
{
|
||||||
QString appName = m_pathChooser->path();
|
const QString &appName = Utils::FileUtils::normalizePathName(m_pathChooser->path());
|
||||||
DeviceProcessItem fallback;
|
DeviceProcessItem fallback;
|
||||||
foreach (const DeviceProcessItem &p, DeviceProcessList::localProcesses()) {
|
foreach (const DeviceProcessItem &p, DeviceProcessList::localProcesses()) {
|
||||||
if (p.exe == appName) {
|
if (Utils::FileUtils::normalizePathName(p.exe) == appName) {
|
||||||
pidFound(p);
|
pidFound(p);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -244,6 +248,19 @@ void UnstartedAppWatcherDialog::stopAndCheckExecutable()
|
|||||||
setWaitingState(checkExecutableString() ? NotWatchingState : InvalidWacherState);
|
setWaitingState(checkExecutableString() ? NotWatchingState : InvalidWacherState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UnstartedAppWatcherDialog::kitChanged()
|
||||||
|
{
|
||||||
|
const DebuggerItem *debugger = DebuggerKitInformation::debugger(m_kitChooser->currentKit());
|
||||||
|
if (!debugger)
|
||||||
|
return;
|
||||||
|
if (debugger->engineType() == Debugger::CdbEngineType) {
|
||||||
|
m_continueOnAttachCheckBox->setEnabled(false);
|
||||||
|
m_continueOnAttachCheckBox->setChecked(true);
|
||||||
|
} else {
|
||||||
|
m_continueOnAttachCheckBox->setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool UnstartedAppWatcherDialog::checkExecutableString() const
|
bool UnstartedAppWatcherDialog::checkExecutableString() const
|
||||||
{
|
{
|
||||||
if (!m_pathChooser->path().isEmpty()) {
|
if (!m_pathChooser->path().isEmpty()) {
|
||||||
@@ -270,7 +287,7 @@ bool UnstartedAppWatcherDialog::hideOnAttach() const
|
|||||||
|
|
||||||
bool UnstartedAppWatcherDialog::continueOnAttach() const
|
bool UnstartedAppWatcherDialog::continueOnAttach() const
|
||||||
{
|
{
|
||||||
return m_continueOnAttachCheckBox->isChecked();
|
return m_continueOnAttachCheckBox->isEnabled() && m_continueOnAttachCheckBox->isChecked();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UnstartedAppWatcherDialog::setWaitingState(UnstartedAppWacherState state)
|
void UnstartedAppWatcherDialog::setWaitingState(UnstartedAppWacherState state)
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ public slots:
|
|||||||
void startStopWatching(bool start);
|
void startStopWatching(bool start);
|
||||||
void findProcess();
|
void findProcess();
|
||||||
void stopAndCheckExecutable();
|
void stopAndCheckExecutable();
|
||||||
|
void kitChanged();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void processFound();
|
void processFound();
|
||||||
|
|||||||
Reference in New Issue
Block a user