[gnome-builder/wip/chergert/bug1: 73/101] debugger; implement finish command



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]