[gnome-builder/wip/chergert/bug1: 73/101] debugger; implement finish command
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/bug1: 73/101] debugger; implement finish command
- Date: Sat, 2 Sep 2017 01:36:31 +0000 (UTC)
commit 298d34412743fd8ff219167c90a89e77dcac8f87
Author: Christian Hergert <chergert redhat com>
Date: Wed Aug 30 02:34:14 2017 -0700
debugger; implement finish command
libide/debugger/ide-debugger-actions.c | 1 +
libide/debugger/ide-debugger-types.c | 1 +
libide/debugger/ide-debugger-types.h | 4 +++-
libide/debugger/ide-debugger.c | 1 +
plugins/gdb/gbp-gdb-debugger.c | 4 ++++
5 files changed, 10 insertions(+), 1 deletions(-)
---
diff --git a/libide/debugger/ide-debugger-actions.c b/libide/debugger/ide-debugger-actions.c
index 8b1f5ec..71fca2d 100644
--- a/libide/debugger/ide-debugger-actions.c
+++ b/libide/debugger/ide-debugger-actions.c
@@ -100,6 +100,7 @@ static IdeDebuggerActionEntry action_info[] = {
{ "continue", ide_debugger_actions_movement, IDE_DEBUGGER_MOVEMENT_CONTINUE, RUNNING_STARTED |
RUNNING_NOT_ACTIVE },
{ "step-in", ide_debugger_actions_movement, IDE_DEBUGGER_MOVEMENT_STEP_IN, RUNNING_STARTED |
RUNNING_NOT_ACTIVE },
{ "step-over", ide_debugger_actions_movement, IDE_DEBUGGER_MOVEMENT_STEP_OVER, RUNNING_STARTED |
RUNNING_NOT_ACTIVE },
+ { "finish", ide_debugger_actions_movement, IDE_DEBUGGER_MOVEMENT_FINISH, RUNNING_STARTED |
RUNNING_NOT_ACTIVE },
};
static gboolean
diff --git a/libide/debugger/ide-debugger-types.c b/libide/debugger/ide-debugger-types.c
index 47b92c1..f82068c 100644
--- a/libide/debugger/ide-debugger-types.c
+++ b/libide/debugger/ide-debugger-types.c
@@ -55,6 +55,7 @@ ide_debugger_movement_get_type (void)
{ IDE_DEBUGGER_MOVEMENT_CONTINUE, "IDE_DEBUGGER_MOVEMENT_CONTINUE", "continue" },
{ IDE_DEBUGGER_MOVEMENT_STEP_IN, "IDE_DEBUGGER_MOVEMENT_STEP_IN", "step-in" },
{ IDE_DEBUGGER_MOVEMENT_STEP_OVER, "IDE_DEBUGGER_MOVEMENT_STEP_OUT", "step-out" },
+ { IDE_DEBUGGER_MOVEMENT_FINISH, "IDE_DEBUGGER_MOVEMENT_FINISH", "finish" },
{ 0 }
};
diff --git a/libide/debugger/ide-debugger-types.h b/libide/debugger/ide-debugger-types.h
index 96435c1..b4539f5 100644
--- a/libide/debugger/ide-debugger-types.h
+++ b/libide/debugger/ide-debugger-types.h
@@ -51,6 +51,7 @@ typedef enum
* any function.
* @IDE_DEBUGGER_MOVEMENT_STEP_OVER: Execute the next line of code, stepping over
* any function.
+ * @IDE_DEBUGGER_MOVEMENT_FINISH: Run until the function returns.
*
* Describes the style of movement that should be performed by the debugger.
*
@@ -62,10 +63,11 @@ typedef enum
IDE_DEBUGGER_MOVEMENT_CONTINUE,
IDE_DEBUGGER_MOVEMENT_STEP_IN,
IDE_DEBUGGER_MOVEMENT_STEP_OVER,
+ IDE_DEBUGGER_MOVEMENT_FINISH,
} IdeDebuggerMovement;
#define IDE_TYPE_DEBUGGER_MOVEMENT (ide_debugger_movement_get_type())
-#define IDE_IS_DEBUGGER_MOVEMENT(m) (((gint)m >= 0) && ((gint)m) <= IDE_DEBUGGER_MOVEMENT_STEP_OVER)
+#define IDE_IS_DEBUGGER_MOVEMENT(m) (((gint)m >= 0) && ((gint)m) <= IDE_DEBUGGER_MOVEMENT_FINISH)
/**
* IdeDebuggerStopReason:
diff --git a/libide/debugger/ide-debugger.c b/libide/debugger/ide-debugger.c
index 6b93662..5a26067 100644
--- a/libide/debugger/ide-debugger.c
+++ b/libide/debugger/ide-debugger.c
@@ -340,6 +340,7 @@ ide_debugger_real_get_can_move (IdeDebugger *self,
case IDE_DEBUGGER_MOVEMENT_START:
return !ide_debugger_get_is_running (self);
+ case IDE_DEBUGGER_MOVEMENT_FINISH:
case IDE_DEBUGGER_MOVEMENT_CONTINUE:
case IDE_DEBUGGER_MOVEMENT_STEP_IN:
case IDE_DEBUGGER_MOVEMENT_STEP_OVER:
diff --git a/plugins/gdb/gbp-gdb-debugger.c b/plugins/gdb/gbp-gdb-debugger.c
index 75431e6..60ec085 100644
--- a/plugins/gdb/gbp-gdb-debugger.c
+++ b/plugins/gdb/gbp-gdb-debugger.c
@@ -1315,6 +1315,10 @@ gbp_gdb_debugger_move_async (IdeDebugger *debugger,
command = "-exec-next";
break;
+ case IDE_DEBUGGER_MOVEMENT_FINISH:
+ command = "-exec-finish";
+ break;
+
default:
g_return_if_reached ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]