aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/debugger/debuggermanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/debugger/debuggermanager.cpp')
-rw-r--r--src/plugins/debugger/debuggermanager.cpp98
1 files changed, 45 insertions, 53 deletions
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index 6d81c5ecdd0..76b253726be 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -219,8 +219,8 @@ void DebuggerManager::init()
m_disassemblerWindow = new DisassemblerWindow;
m_modulesWindow = new ModulesWindow(this);
m_outputWindow = new DebuggerOutputWindow;
- m_registerWindow = new RegisterWindow;
- m_stackWindow = new StackWindow;
+ m_registerWindow = new RegisterWindow(this);
+ m_stackWindow = new StackWindow(this);
m_sourceFilesWindow = new SourceFilesWindow;
m_threadsWindow = new ThreadsWindow;
m_localsWindow = new WatchWindow(WatchWindow::LocalsType, this);
@@ -261,7 +261,7 @@ void DebuggerManager::init()
this, SLOT(reloadDisassembler()));
// Breakpoints
- m_breakHandler = new BreakHandler;
+ m_breakHandler = new BreakHandler(this);
QAbstractItemView *breakView =
qobject_cast<QAbstractItemView *>(m_breakWindow);
breakView->setModel(m_breakHandler->model());
@@ -271,12 +271,6 @@ void DebuggerManager::init()
m_breakHandler, SLOT(removeBreakpoint(int)));
connect(breakView, SIGNAL(breakpointSynchronizationRequested()),
this, SLOT(attemptBreakpointSynchronization()));
- connect(m_breakHandler, SIGNAL(gotoLocation(QString,int,bool)),
- this, SLOT(gotoLocation(QString,int,bool)));
- connect(m_breakHandler, SIGNAL(sessionValueRequested(QString,QVariant*)),
- this, SIGNAL(sessionValueRequested(QString,QVariant*)));
- connect(m_breakHandler, SIGNAL(setSessionValueRequested(QString,QVariant)),
- this, SIGNAL(setSessionValueRequested(QString,QVariant)));
connect(breakView, SIGNAL(breakByFunctionRequested(QString)),
this, SLOT(breakByFunction(QString)), Qt::QueuedConnection);
connect(breakView, SIGNAL(breakByFunctionMainRequested()),
@@ -357,16 +351,6 @@ void DebuggerManager::init()
//m_stepAction->setShortcut(QKeySequence(tr("F7")));
m_stepAction->setIcon(QIcon(":/debugger/images/debugger_stepinto_small.png"));
- m_nextIAction = new QAction(this);
- m_nextIAction->setText(tr("Step Over Instruction"));
- //m_nextIAction->setShortcut(QKeySequence(tr("Shift+F6")));
- m_nextIAction->setIcon(QIcon(":/debugger/images/debugger_stepoverproc_small.png"));
-
- m_stepIAction = new QAction(this);
- m_stepIAction->setText(tr("Step One Instruction"));
- //m_stepIAction->setShortcut(QKeySequence(tr("Shift+F9")));
- m_stepIAction->setIcon(QIcon(":/debugger/images/debugger_steponeproc_small.png"));
-
m_stepOutAction = new QAction(this);
m_stepOutAction->setText(tr("Step Out"));
//m_stepOutAction->setShortcut(QKeySequence(tr("Shift+F7")));
@@ -405,10 +389,8 @@ void DebuggerManager::init()
this, SLOT(nextExec()));
connect(m_stepAction, SIGNAL(triggered()),
this, SLOT(stepExec()));
- connect(m_nextIAction, SIGNAL(triggered()),
- this, SLOT(nextIExec()));
- connect(m_stepIAction, SIGNAL(triggered()),
- this, SLOT(stepIExec()));
+ connect(theDebuggerAction(StepByInstruction), SIGNAL(triggered()),
+ this, SLOT(stepByInstructionTriggered()));
connect(m_stepOutAction, SIGNAL(triggered()),
this, SLOT(stepOutExec()));
connect(m_runToLineAction, SIGNAL(triggered()),
@@ -427,9 +409,14 @@ void DebuggerManager::init()
connect(theDebuggerAction(ExecuteCommand), SIGNAL(triggered()),
this, SLOT(executeDebuggerCommand()));
+
connect(theDebuggerAction(WatchPoint), SIGNAL(triggered()),
this, SLOT(watchPoint()));
+ connect(theDebuggerAction(StepByInstruction), SIGNAL(triggered()),
+ this, SLOT(stepByInstructionTriggered()));
+
+
m_breakDock = m_mainWindow->addDockForWidget(m_breakWindow);
m_disassemblerDock = m_mainWindow->addDockForWidget(m_disassemblerWindow);
@@ -725,14 +712,6 @@ void DebuggerManager::updateWatchData(const WatchData &data)
m_engine->updateWatchData(data);
}
-QVariant DebuggerManager::sessionValue(const QString &name)
-{
- // this is answered by the plugin
- QVariant value;
- emit sessionValueRequested(name, &value);
- return value;
-}
-
static inline QString msgEngineNotAvailable(const char *engine)
{
return DebuggerManager::tr("The application requires the debugger engine '%1', which is disabled.").arg(QLatin1String(engine));
@@ -986,7 +965,10 @@ void DebuggerManager::stepExec()
{
QTC_ASSERT(m_engine, return);
resetLocation();
- m_engine->stepExec();
+ if (theDebuggerBoolSetting(StepByInstruction))
+ m_engine->stepIExec();
+ else
+ m_engine->stepExec();
}
void DebuggerManager::stepOutExec()
@@ -1000,21 +982,10 @@ void DebuggerManager::nextExec()
{
QTC_ASSERT(m_engine, return);
resetLocation();
- m_engine->nextExec();
-}
-
-void DebuggerManager::stepIExec()
-{
- QTC_ASSERT(m_engine, return);
- resetLocation();
- m_engine->stepIExec();
-}
-
-void DebuggerManager::nextIExec()
-{
- QTC_ASSERT(m_engine, return);
- resetLocation();
- m_engine->nextIExec();
+ if (theDebuggerBoolSetting(StepByInstruction))
+ m_engine->nextIExec();
+ else
+ m_engine->nextExec();
}
void DebuggerManager::watchPoint()
@@ -1190,8 +1161,6 @@ void DebuggerManager::setStatus(int status)
m_runToFunctionAction->setEnabled(ready);
m_jumpToLineAction->setEnabled(ready);
m_nextAction->setEnabled(ready);
- m_stepIAction->setEnabled(ready);
- m_nextIAction->setEnabled(ready);
//showStatusMessage(QString("started: %1, running: %2").arg(started).arg(running));
emit statusChanged(m_status);
const bool notbusy = ready || status == DebuggerProcessNotReady;
@@ -1316,17 +1285,26 @@ void DebuggerManager::resetLocation()
emit resetLocationRequested();
}
-void DebuggerManager::gotoLocation(const QString &fileName, int line,
- bool setMarker)
+void DebuggerManager::gotoLocation(const StackFrame &frame, bool setMarker)
{
// connected to the plugin
- emit gotoLocationRequested(fileName, line, setMarker);
+ emit gotoLocationRequested(frame, setMarker);
}
void DebuggerManager::fileOpen(const QString &fileName)
{
// connected to the plugin
- emit gotoLocationRequested(fileName, 1, false);
+ StackFrame frame;
+ frame.file = fileName;
+ frame.line = -1;
+ emit gotoLocationRequested(frame, false);
+}
+
+void DebuggerManager::stepByInstructionTriggered()
+{
+ QTC_ASSERT(m_stackHandler, return);
+ StackFrame frame = m_stackHandler->currentFrame();
+ gotoLocation(frame, true);
}
@@ -1497,6 +1475,20 @@ bool DebuggerManager::isReverseDebugging() const
return m_reverseDirectionAction->isChecked();
}
+QVariant DebuggerManager::sessionValue(const QString &name)
+{
+ // this is answered by the plugin
+ QVariant value;
+ emit sessionValueRequested(name, &value);
+ return value;
+}
+
+void DebuggerManager::setSessionValue(const QString &name, const QVariant &value)
+{
+ emit setSessionValueRequested(name, value);
+}
+
+
//////////////////////////////////////////////////////////////////////
//
// Testing