diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | src/plugin.c | 125 |
2 files changed, 16 insertions, 115 deletions
@@ -1,5 +1,11 @@ 2008-04-07 Rob Bradford <rob@openedhand.com> + * src/plugin.c: (action_remote_debug_stop_activate_cb), + (do_remote_gdb), (action_remote_debug_activate_cb), (update_state): + Port over to use new target API. + +2008-04-07 Rob Bradford <rob@openedhand.com> + * src/beaver-target.c: (beaver_target_finalize), (_beaver_target_remote_debug), (debug_launcher_data_cb): * src/beaver-target.h: diff --git a/src/plugin.c b/src/plugin.c index cccca9c..f428026 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -51,11 +51,6 @@ "-o \"UserKnownHostsFile /dev/null\"' " \ "-avv %s/usr/ root@%s:/usr" -#define REMOTE_GDB_COMMAND "ssh -o 'CheckHostIP no' " \ - "-o 'StrictHostKeyChecking no' " \ - "-o 'UserKnownHostsFile /dev/null' " \ - "root@%s anjuta-remote-run gdbserver 0.0.0.0:2345 %s" - #define LOCAL_GDB_COMMAND "%s-gdb -x %s %s" #define GDB_SCRIPT "set solib-absolute-prefix %s\n" \ @@ -153,8 +148,6 @@ static void message_view_buffer_flushed_cb (IAnjutaMessageView *view, gchar *data, gpointer userdata); static void remote_launcher_child_exited_cb (AnjutaLauncher *launcher, gint child_pid, gint status, gulong time, gpointer userdata); -static void remote_gdb_launcher_child_exited_cb (AnjutaLauncher *launcher, - gint child_pid, gint status, gulong time, gpointer userdata); static void oprofileui_launcher_child_exited_cb (AnjutaLauncher *launcher, gint child_pid, gint status, gulong time, gpointer userdata); static void target_state_changed_cb (BeaverTarget *target, gpointer userdata); @@ -495,25 +488,10 @@ static void action_remote_debug_stop_activate_cb (GtkAction *action, gpointer userdata) { AnjutaPluginSdk *sp = (AnjutaPluginSdk *)userdata; - gchar *args[] = { "ssh", - SSH_OPTIONS, - "-l", "root", - (gchar *)beaver_target_get_ip_address (sp->target), - "killall gdbserver", - NULL}; - - if (!sp->remote_launcher) - { - sp->remote_launcher = anjuta_launcher_new (); - g_signal_connect (sp->remote_launcher, "child-exited", - (GCallback)remote_launcher_child_exited_cb, sp); - } - if (anjuta_launcher_execute_v (sp->remote_launcher, args, NULL, NULL)) + if (!beaver_target_remote_debug_stop (sp->target, NULL)) { - gtk_action_set_sensitive (sp->remote_debug_stop_action, FALSE); - } else { - g_warning ("Error whilst launching command to kill gdbserver"); + g_warning ("Error whilst stopping remote debugger on target"); } } @@ -760,94 +738,17 @@ do_local_gdb (AnjutaPluginSdk *sp) g_free (cur_dir); } -static gboolean -remote_gdb_timeout_cb (gpointer userdata) -{ - AnjutaPluginSdk *sp = (AnjutaPluginSdk *)userdata; - - do_local_gdb (sp); - return FALSE; -} - static void do_remote_gdb (AnjutaPluginSdk *sp) { IAnjutaMessageManager *msg_manager = NULL; - gchar *cmd = NULL; GError *error = NULL; - /* Create a launcher for running gdbserver on the remote device */ - if (!sp->remote_gdb_launcher) - { - sp->remote_gdb_launcher = anjuta_launcher_new (); - g_signal_connect (sp->remote_gdb_launcher, "child-exited", - (GCallback)remote_gdb_launcher_child_exited_cb, sp); - } - - /* Get the message view manager */ - msg_manager = anjuta_shell_get_interface (ANJUTA_PLUGIN (sp)->shell, - IAnjutaMessageManager, &error); - - if (!msg_manager) - { - g_warning ("Error getting implementation of IAnjutaMessageManager: %s", - error->message); - g_clear_error (&error); - - return; - } - - if (!sp->remote_msg_view) - { - /* Create a new view */ - sp->remote_msg_view = ianjuta_message_manager_add_view (msg_manager, - _("Remote"), ICON_FILE, &error); - - if (!sp->remote_msg_view) - { - g_warning ("Error getting view: %s", error->message); - g_clear_error (&error); - return; - } - - g_signal_connect (sp->remote_msg_view, "buffer-flushed", - (GCallback)message_view_buffer_flushed_cb, sp); - - /* When the view is destroyed make the pointer to it null */ - g_object_add_weak_pointer (G_OBJECT (sp->remote_msg_view), - (gpointer *)&sp->remote_msg_view); - } - - ianjuta_message_manager_set_current_view (msg_manager, sp->remote_msg_view, - &error); - - if (error != NULL) - { - g_warning ("Error setting current message view: %s", error->message); - g_clear_error (&error); - return; - } - - cmd = g_strdup_printf (REMOTE_GDB_COMMAND, - beaver_target_get_ip_address (sp->target), - sp->gdb_remote_command); - /* start the remote gdbserver */ - if (anjuta_launcher_execute (sp->remote_gdb_launcher, cmd, - remote_gdb_launcher_data_cb, sp)) + if (!beaver_target_remote_debug (sp->target, sp->gdb_remote_command, NULL, NULL)) { - /* - * Add a timeout for 8s to allow the gdbserver to startup (or perhaps it - * might fail. if it fails then this timeout will be removed and the local - * side of the debugging won't happen) - */ - sp->remote_gdb_timeout = g_timeout_add_seconds (8, - remote_gdb_timeout_cb, sp); - - gtk_action_set_sensitive (sp->remote_debug_stop_action, TRUE); + g_warning ("Error starting remote gdbserver"); } - - g_free (cmd); } static void @@ -856,24 +757,12 @@ action_remote_debug_activate_cb (GtkAction *action, { AnjutaPluginSdk *sp = (AnjutaPluginSdk *)userdata; - IAnjutaTerminal *terminal = NULL; GError *error = NULL; gchar *cur_dir = NULL; gchar *cmd = NULL; gint res = 0; - terminal = anjuta_shell_get_interface (ANJUTA_PLUGIN (sp)->shell, - IAnjutaTerminal, &error); - - if (terminal == NULL) - { - g_warning ("Error getting terminal interface from shell: %s", - error->message); - g_clear_error (&error); - return; - } - cur_dir = g_get_current_dir (); res = remote_debug_dialog (sp); @@ -1251,6 +1140,12 @@ update_state (AnjutaPluginSdk *sp) gtk_action_set_sensitive (sp->remote_run_action, TRUE); gtk_action_set_sensitive (sp->remote_debug_action, TRUE); + + gtk_action_set_sensitive (sp->remote_debug_stop_action, FALSE); + break; + case TARGET_STATE_DEBUGGER_READY: + do_local_gdb (sp); + gtk_action_set_sensitive (sp->remote_debug_stop_action, TRUE); break; } } |