namespace Debugger {
class DebuggerEngine;
-class DebuggerRunControl;
class DebuggerStartParameters;
namespace Internal {
virtual void removeLocationMark() = 0;
virtual bool isReverseDebugging() const = 0;
- virtual void runControlStarted(DebuggerRunControl *runControl) = 0;
- virtual void runControlFinished(DebuggerRunControl *runControl) = 0;
+ virtual void runControlStarted(DebuggerEngine *engine) = 0;
+ virtual void runControlFinished(DebuggerEngine *engine) = 0;
virtual void displayDebugger(DebuggerEngine *engine, bool updateEngine) = 0;
virtual DebuggerLanguages activeLanguages() const = 0;
virtual void synchronizeBreakpoints() = 0;
virtual void shutdownInferior() = 0;
virtual void shutdownEngine() = 0;
-protected:
- DebuggerRunControl *runControl() const;
+ DebuggerRunControl *runControl() const; // FIXME: Protect.
+protected:
static QString msgWatchpointTriggered(BreakpointId id,
int number, quint64 address);
static QString msgWatchpointTriggered(BreakpointId id,
{
showMessage("ATTEMPT SYNC", LogDebug);
for (int i = 0, n = m_snapshotHandler->size(); i != n; ++i) {
- if (DebuggerRunControl *runControl = m_snapshotHandler->at(i)) {
- DebuggerEngine *engine = runControl->engine();
+ if (DebuggerEngine *engine = m_snapshotHandler->at(i))
engine->attemptBreakpointSynchronization();
- }
}
}
void synchronizeWatchers()
{
for (int i = 0, n = m_snapshotHandler->size(); i != n; ++i) {
- if (DebuggerRunControl *runControl = m_snapshotHandler->at(i)) {
- DebuggerEngine *engine = runControl->engine();
+ if (DebuggerEngine *engine = m_snapshotHandler->at(i))
engine->watchHandler()->updateWatchers();
- }
}
}
bool hasSnapshots() const { return m_snapshotHandler->size(); }
void createNewDock(QWidget *widget);
- void runControlStarted(DebuggerRunControl *runControl);
- void runControlFinished(DebuggerRunControl *runControl);
+ void runControlStarted(DebuggerEngine *engine);
+ void runControlFinished(DebuggerEngine *engine);
DebuggerLanguages activeLanguages() const;
QString gdbBinaryForToolChain(int toolChain) const;
void remoteCommand(const QStringList &options, const QStringList &);
}
for (int i = 0, n = m_snapshotHandler->size(); i != n; ++i) {
// Run controls might be deleted during exit.
- if (DebuggerRunControl *runControl = m_snapshotHandler->at(i)) {
+ if (DebuggerEngine *engine = m_snapshotHandler->at(i)) {
+ DebuggerRunControl *runControl = engine->runControl();
RunConfiguration *rc = runControl->runConfiguration();
if (rc == activeRc) {
m_snapshotHandler->setCurrentIndex(i);
- DebuggerEngine *engine = runControl->engine();
updateState(engine);
return;
}
// with command-line debugging startup.
// FIXME ABC: Still wanted? Iterate?
//if (d->m_engine && state() != DebuggerNotReady
- // && runControl()->sp().startMode == StartInternal)
+ // && engine()->sp().startMode == StartInternal)
// d->m_engine->shutdown();
}
dockWidget->show();
}
-void DebuggerPluginPrivate::runControlStarted(DebuggerRunControl *runControl)
+void DebuggerPluginPrivate::runControlStarted(DebuggerEngine *engine)
{
activateDebugMode();
- DebuggerEngine *engine = runControl->engine();
const QString message = tr("Starting debugger '%1' for tool chain '%2'...")
.arg(engine->objectName())
.arg(engine->startParameters().toolChainName());
showMessage(message, StatusBar);
showMessage(m_debuggerSettings->dump(), LogDebug);
- m_snapshotHandler->appendSnapshot(runControl);
+ m_snapshotHandler->appendSnapshot(engine);
connectEngine(engine);
}
-void DebuggerPluginPrivate::runControlFinished(DebuggerRunControl *runControl)
+void DebuggerPluginPrivate::runControlFinished(DebuggerEngine *engine)
{
- m_snapshotHandler->removeSnapshot(runControl);
+ m_snapshotHandler->removeSnapshot(engine);
if (m_snapshotHandler->size() == 0) {
// Last engine quits.
disconnectEngine();
return;
}
- debuggerCore()->runControlStarted(this);
+ debuggerCore()->runControlStarted(engine());
// We might get a synchronous startFailed() notification on Windows,
// when launching the process fails. Emit a proper finished() sequence.
emit addToOutputWindowInline(this, tr("Debugging has finished"), false);
if (engine())
engine()->handleFinished();
- debuggerCore()->runControlFinished(this);
+ debuggerCore()->runControlFinished(engine());
}
void DebuggerRunControl::showMessage(const QString &msg, int channel)
SnapshotHandler::~SnapshotHandler()
{
for (int i = m_snapshots.size(); --i >= 0; ) {
- if (DebuggerEngine *engine = engineAt(i)) {
- const DebuggerStartParameters & sp = engine->startParameters();
+ if (DebuggerEngine *engine = at(i)) {
+ const DebuggerStartParameters &sp = engine->startParameters();
if (sp.isSnapshot && !sp.coreFile.isEmpty())
QFile::remove(sp.coreFile);
}
}
}
-DebuggerEngine *SnapshotHandler::engineAt(int i) const
-{
- DebuggerEngine *engine = m_snapshots.at(i)->engine();
- QTC_ASSERT(engine, qDebug() << "ENGINE AT " << i << "DELETED");
- return engine;
-}
-
int SnapshotHandler::rowCount(const QModelIndex &parent) const
{
// Since the stack is not a tree, row count is 0 for any valid parent
if (!index.isValid() || index.row() >= m_snapshots.size())
return QVariant();
- const DebuggerEngine *engine = engineAt(index.row());
+ const DebuggerEngine *engine = at(index.row());
if (role == SnapshotCapabilityRole)
return engine && (engine->debuggerCapabilities() & SnapshotCapability);
{
m_currentIndex = index;
//qDebug() << "ACTIVATING INDEX: " << m_currentIndex << " OF " << size();
- debuggerCore()->displayDebugger(engineAt(index), true);
+ debuggerCore()->displayDebugger(at(index), true);
reset();
}
void SnapshotHandler::createSnapshot(int index)
{
- DebuggerEngine *engine = engineAt(index);
+ DebuggerEngine *engine = at(index);
QTC_ASSERT(engine, return);
engine->createSnapshot();
}
void SnapshotHandler::removeSnapshot(int index)
{
- DebuggerEngine *engine = engineAt(index);
+ DebuggerEngine *engine = at(index);
//qDebug() << "REMOVING " << engine;
QTC_ASSERT(engine, return);
#if 0
reset();
}
-void SnapshotHandler::appendSnapshot(DebuggerRunControl *rc)
+void SnapshotHandler::appendSnapshot(DebuggerEngine *engine)
{
- m_snapshots.append(rc);
+ m_snapshots.append(engine);
m_currentIndex = size() - 1;
reset();
}
-void SnapshotHandler::removeSnapshot(DebuggerRunControl *rc)
+void SnapshotHandler::removeSnapshot(DebuggerEngine *engine)
{
// Could be that the run controls died before it was appended.
- int index = m_snapshots.indexOf(rc);
+ int index = m_snapshots.indexOf(engine);
if (index != -1)
removeSnapshot(index);
}
reset();
}
-DebuggerRunControl *SnapshotHandler::at(int i) const
+DebuggerEngine *SnapshotHandler::at(int i) const
{
return m_snapshots.at(i).data();
}
-QList<DebuggerRunControl*> SnapshotHandler::runControls() const
-{
- // Return unique list of run controls
- QList<DebuggerRunControl*> rc;
- rc.reserve(m_snapshots.size());
- foreach(const QPointer<DebuggerRunControl> &runControlPtr, m_snapshots)
- if (DebuggerRunControl *runControl = runControlPtr)
- if (!rc.contains(runControl))
- rc.push_back(runControl);
- return rc;
-}
-
} // namespace Internal
} // namespace Debugger
namespace Debugger {
-class DebuggerRunControl;
class DebuggerEngine;
namespace Internal {
void removeAll();
QAbstractItemModel *model() { return this; }
int currentIndex() const { return m_currentIndex; }
- void appendSnapshot(DebuggerRunControl *rc);
- void removeSnapshot(DebuggerRunControl *rc);
+ void appendSnapshot(DebuggerEngine *engine);
+ void removeSnapshot(DebuggerEngine *engine);
void setCurrentIndex(int index);
int size() const { return m_snapshots.size(); }
- DebuggerRunControl *at(int index) const;
- QList<DebuggerRunControl *> runControls() const;
+ DebuggerEngine *at(int index) const;
void createSnapshot(int index);
void activateSnapshot(int index);
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
Qt::ItemFlags flags(const QModelIndex &index) const;
Q_SLOT void resetModel() { reset(); }
- DebuggerEngine *engineAt(int i) const;
int m_currentIndex;
- QList< QPointer<DebuggerRunControl> > m_snapshots;
+ QList< QPointer<DebuggerEngine> > m_snapshots;
const QVariant m_positionIcon;
const QVariant m_emptyIcon;
};
#include "debuggeractions.h"
#include "debuggercore.h"
-#include "debuggerrunner.h"
+#include "debuggerengine.h"
#include <utils/qtcassert.h>
#include <utils/savedaction.h>
void SnapshotWindow::removeSnapshot(int i)
{
- m_snapshotHandler->at(i)->stop();
+ m_snapshotHandler->at(i)->quitDebugger();
}
void SnapshotWindow::resizeColumnsToContents()