| Summary: | Featurewish: Setting the instruction pointer within the KDevelop debugger | ||
|---|---|---|---|
| Product: | [Applications] kdevelop | Reporter: | Joachim Eibl <joachim.eibl> |
| Component: | general | Assignee: | kdevelop-bugs-null |
| Status: | RESOLVED FIXED | ||
| Severity: | wishlist | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Compiled Sources | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
Joachim Eibl
2004-06-06 23:31:33 UTC
SVN commit 439210 by rgruber:
Added toolbar button to set the instruction pointer to a different
location using gdb's jump command
BUGS:82956
M +1 -0 languages/cpp/debugger/dbgcontroller.h
M +24 -1 languages/cpp/debugger/debuggerpart.cpp
M +1 -0 languages/cpp/debugger/debuggerpart.h
M +13 -0 languages/cpp/debugger/gdbcontroller.cpp
M +1 -0 languages/cpp/debugger/gdbcontroller.h
M +1 -0 languages/cpp/debugger/kdevdebugger.rc
M +1 -1 pics/toolbar/Makefile.am
AM pics/toolbar/hi22-action-dbgjumpto.png
--- branches/KDE/3.5/kdevelop/languages/cpp/debugger/dbgcontroller.h #439209:439210
@@ -96,6 +96,7 @@
virtual void slotRun() = 0;
virtual void slotRunUntil(const QString &fileName, int lineNum) = 0;
+ virtual void slotJumpTo(const QString &fileName, int lineNum) = 0;
virtual void slotStepInto() = 0;
virtual void slotStepOver() = 0;
virtual void slotStepIntoIns() = 0;
--- branches/KDE/3.5/kdevelop/languages/cpp/debugger/debuggerpart.cpp #439209:439210
@@ -194,6 +194,13 @@
action->setWhatsThis(i18n("<b>Run to cursor</b><p>Continues execution until the cursor position is reached."));
+ action = new KAction(i18n("Set E&xecution Position to Cursor"), "dbgjumpto", 0,
+ this, SLOT(slotJumpToCursor()),
+ actionCollection(), "debug_jumptocursor");
+ action->setToolTip( i18n("Jump to cursor") );
+ action->setWhatsThis(i18n("<b>Set Execution Position </b><p>Set the execution pointer to the current cursor position."));
+
+
action = new KAction(i18n("Step &Over"), "dbgnext", 0,
this, SLOT(slotStepOver()),
actionCollection(), "debug_stepover");
@@ -805,9 +812,25 @@
uint line, col;
cursorIface->cursorPosition(&line, &col);
- controller->slotRunUntil(rwpart->url().path(), line);
+ controller->slotRunUntil(rwpart->url().path(), ++line);
}
+void DebuggerPart::slotJumpToCursor()
+{
+ KParts::ReadWritePart *rwpart
+ = dynamic_cast<KParts::ReadWritePart*>(partController()->activePart());
+ KTextEditor::ViewCursorInterface *cursorIface
+ = dynamic_cast<KTextEditor::ViewCursorInterface*>(partController()->activeWidget());
+
+ if (!rwpart || !rwpart->url().isLocalFile() || !cursorIface)
+ return;
+
+ uint line, col;
+ cursorIface->cursorPositionReal(&line, &col);
+
+ controller->slotJumpTo(rwpart->url().path(), ++line);
+}
+
void DebuggerPart::slotStepOver()
{
controller->slotStepOver();
--- branches/KDE/3.5/kdevelop/languages/cpp/debugger/debuggerpart.h #439209:439210
@@ -74,6 +74,7 @@
void slotStop(KDevPlugin* which = 0);
void slotPause();
void slotRunToCursor();
+ void slotJumpToCursor();
void slotStepOver();
void slotStepOverInstruction();
void slotStepIntoInstruction();
--- branches/KDE/3.5/kdevelop/languages/cpp/debugger/gdbcontroller.cpp #439209:439210
@@ -1492,6 +1492,19 @@
// **************************************************************************
+void GDBController::slotJumpTo(const QString &fileName, int lineNum)
+{
+ if (stateIsOn(s_appBusy|s_dbgNotStarted|s_shuttingDown))
+ return;
+
+ if (!fileName.isEmpty()) {
+ queueCmd(new GDBCommand(QCString().sprintf("tbreak %s:%d", fileName.latin1(), lineNum), NOTRUNCMD, NOTINFOCMD, 0));
+ queueCmd(new GDBCommand(QCString().sprintf("jump %s:%d", fileName.latin1(), lineNum), RUNCMD, NOTINFOCMD, 0));
+ }
+}
+
+// **************************************************************************
+
void GDBController::slotStepInto()
{
if (stateIsOn(s_appBusy|s_appNotStarted|s_shuttingDown))
--- branches/KDE/3.5/kdevelop/languages/cpp/debugger/gdbcontroller.h #439209:439210
@@ -97,6 +97,7 @@
void slotRun();
void slotRunUntil(const QString &filename, int lineNum);
+ void slotJumpTo(const QString &filename, int lineNum);
void slotStepInto();
void slotStepOver();
void slotStepIntoIns();
--- branches/KDE/3.5/kdevelop/languages/cpp/debugger/kdevdebugger.rc #439209:439210
@@ -7,6 +7,7 @@
<Action name="debug_stop" group="debug"/>
<Action name="debug_pause" group="debug"/>
<Action name="debug_runtocursor" group="debug"/>
+ <Action name="debug_jumptocursor" group="debug"/>
<Separator group="debug"/>
<Action name="debug_stepover" group="debug"/>
<Action name="debug_stepoverinst" group="debug"/>
--- branches/KDE/3.5/kdevelop/pics/toolbar/Makefile.am #439209:439210
@@ -2,7 +2,7 @@
kdevelop_ICON = AUTO
kdevdebuggerdir = $(kde_datadir)/kdevdebugger/icons
-kdevdebugger_ICON = dbgnext dbgwatchvar dbgrun dbgstepout dbgmemview dbgparam dbgrunto dbgstep dbgnextinst dbgrestart dbgstepinst dbgvar debugger
+kdevdebugger_ICON = dbgnext dbgwatchvar dbgrun dbgstepout dbgmemview dbgparam dbgrunto dbgstep dbgnextinst dbgrestart dbgstepinst dbgvar debugger dbgjumpto
cppsupportdir = $(kde_datadir)/kdevcppsupport/icons
cppsupport_ICON = classnew classwiz
** branches/KDE/3.5/kdevelop/pics/toolbar/hi22-action-dbgjumpto.png #property changes
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Hi, I just tested this and it works great. Thank you very much. Cheers, Joachim |