diff --git a/plugins/gdb/anjuta-gdb.ui b/plugins/gdb/anjuta-gdb.ui
index c5f7226..66c390b 100644
--- a/plugins/gdb/anjuta-gdb.ui
+++ b/plugins/gdb/anjuta-gdb.ui
@@ -1,26 +1,30 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy project-wide -->
   <object class="GtkWindow" id="gdb_preferences_window">
+    <property name="can_focus">False</property>
     <child>
       <object class="GtkVBox" id="gdb_preferences_container">
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
         <signal name="destroy" handler="gdb_on_destroy_preferences" swapped="no"/>
         <child>
           <object class="GtkFrame" id="frame2">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
             <property name="label_xalign">0</property>
             <property name="shadow_type">none</property>
             <child>
               <object class="GtkAlignment" id="alignment1">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                 <property name="left_padding">12</property>
                 <child>
                   <object class="GtkHBox" id="hbox1">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                     <property name="spacing">6</property>
                     <child>
@@ -28,24 +32,28 @@
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="hscrollbar_policy">automatic</property>
-                        <property name="vscrollbar_policy">automatic</property>
                         <property name="shadow_type">in</property>
                         <child>
                           <object class="GtkTreeView" id="printers_treeview">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
+                            <child internal-child="selection">
+                              <object class="GtkTreeSelection" id="treeview-selection1"/>
+                            </child>
                           </object>
                         </child>
                       </object>
                       <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkVButtonBox" id="vbuttonbox1">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="border_width">5</property>
                         <property name="spacing">6</property>
@@ -87,6 +95,7 @@
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
@@ -97,6 +106,7 @@
             <child type="label">
               <object class="GtkLabel" id="label1">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                 <property name="ypad">6</property>
                 <property name="label" translatable="yes">Available pretty printers</property>
@@ -107,11 +117,49 @@
             </child>
           </object>
           <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
             <property name="position">0</property>
           </packing>
         </child>
         <child>
-          <placeholder/>
+          <object class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <property name="right_padding">7</property>
+                <child>
+                  <object class="GtkEntry" id="executable_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="invisible_char">●</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">GDB Executable</property>
+                <property name="use_markup">True</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
         </child>
         <child>
           <placeholder/>
diff --git a/plugins/gdb/debugger.c b/plugins/gdb/debugger.c
index 2ecb400..bda9b68 100644
--- a/plugins/gdb/debugger.c
+++ b/plugins/gdb/debugger.c
@@ -56,7 +56,6 @@
 
 #define GDB_PROMPT  "(gdb)"
 #define FILE_BUFFER_SIZE 1024
-#define GDB_PATH "gdb"
 #define MAX_CHILDREN		25		/* Limit the number of variable children
 									 * returned by debugger */
 #define SUMMARY_MAX_LENGTH   90	 /* Should be smaller than 4K to be displayed
@@ -87,7 +86,7 @@ struct _DebuggerPriv
 	
 	IAnjutaDebuggerOutputCallback output_callback;
 	gpointer output_user_data;
-	
+
 	GList *search_dirs;
 	
 	gboolean prog_is_running;
@@ -957,6 +956,7 @@ debugger_list_features (Debugger *debugger)
 gboolean
 debugger_start (Debugger *debugger,
 				const GList *search_dirs,
+                const gchar *gdb_executable,
 				const gchar *prog,
 				gboolean is_libtool_prog)
 {
@@ -1041,15 +1041,17 @@ debugger_start (Debugger *debugger,
 		gchar *quoted_prog = gdb_quote (prog);
 		if (is_libtool_prog == FALSE)
 		{
-			command_str = g_strdup_printf (GDB_PATH " -f -n -i=mi2 %s %s "
-										   "-x %s/gdb.init \"%s\"", dir, term == NULL ? "" : term,
+			command_str = g_strdup_printf ("%s -f -n -i=mi2 %s %s "
+										   "-x %s/gdb.init \"%s\"", gdb_executable, dir, 
+			                               term == NULL ? "" : term,
 										   PACKAGE_DATA_DIR, quoted_prog);
 		}
 		else
 		{
-			command_str = g_strdup_printf ("libtool --mode=execute " GDB_PATH
+			command_str = g_strdup_printf ("libtool --mode=execute %s"
 										   " -f -n -i=mi2 %s %s "
-										   "-x %s/gdb.init \"%s\"", dir, term == NULL ? "" : term,
+										   "-x %s/gdb.init \"%s\"", gdb_executable,
+			                               dir, term == NULL ? "" : term,
 										   PACKAGE_DATA_DIR, quoted_prog);
 		}
 		g_free (quoted_prog);
@@ -1058,15 +1060,16 @@ debugger_start (Debugger *debugger,
 	{
 		if (is_libtool_prog == FALSE)
 		{
-			command_str = g_strdup_printf (GDB_PATH " -f -n -i=mi2 %s %s "
-										   "-x %s/gdb.init ", term == NULL ? "" : term,
+			command_str = g_strdup_printf ("%s -f -n -i=mi2 %s %s "
+										   "-x %s/gdb.init ", gdb_executable,
+			                               term == NULL ? "" : term,
 										   dir, PACKAGE_DATA_DIR);
 		}
 		else
 		{
-			command_str = g_strdup_printf ("libtool --mode=execute " GDB_PATH
+			command_str = g_strdup_printf ("libtool --mode=execute %s"
 										   " -f -n -i=mi2 %s %s -x "
-										   "%s/gdb.init ",
+										   "%s/gdb.init ", gdb_executable,
 										   dir, term == NULL ? "" : term, PACKAGE_DATA_DIR);
 		}
 	}
diff --git a/plugins/gdb/debugger.h b/plugins/gdb/debugger.h
index 85f67b8..1699f23 100644
--- a/plugins/gdb/debugger.h
+++ b/plugins/gdb/debugger.h
@@ -95,6 +95,7 @@ gboolean debugger_set_pretty_printers (Debugger *debugger,
 
 gboolean debugger_start (Debugger *debugger,
 						const GList *search_dirs,
+                        const gchar *gdb_executable, 
 						const gchar *prog,
 						gboolean is_libtool_prog);
 
diff --git a/plugins/gdb/plugin.c b/plugins/gdb/plugin.c
index fd3c4e2..51d7fa7 100644
--- a/plugins/gdb/plugin.c
+++ b/plugins/gdb/plugin.c
@@ -69,6 +69,9 @@ struct _GdbPlugin
 
 	/* Pretty printer list */
 	GList *pretty_printers;
+	
+	/* Location of the GDB Executable */
+	gchar *gdb_executable;
 };
 
 struct _GdbPluginClass
@@ -280,6 +283,7 @@ on_session_save (AnjutaShell *shell, AnjutaSessionPhase phase, AnjutaSession *se
 		return;
 
 	gdb_save_pretty_printers (session, this->pretty_printers);
+	gdb_save_executable_path(session, this->gdb_executable);
 }
 
 static void on_session_load (AnjutaShell *shell, AnjutaSessionPhase phase, AnjutaSession *session, GdbPlugin *this)
@@ -290,6 +294,7 @@ static void on_session_load (AnjutaShell *shell, AnjutaSessionPhase phase, Anjut
 	g_list_foreach (this->pretty_printers, (GFunc)gdb_pretty_printer_free, NULL);
 	g_list_free (this->pretty_printers);
 	this->pretty_printers = gdb_load_pretty_printers (session);
+	this->gdb_executable = gdb_load_executable_path(session);
 }
 
 /* AnjutaPlugin functions
@@ -302,6 +307,7 @@ gdb_plugin_activate_plugin (AnjutaPlugin* plugin)
 
 	DEBUG_PRINT ("%s", "GDB: Activating Gdb plugin...");
 	this->pretty_printers = NULL;
+	this->gdb_executable = NULL;
 
 	/* Connect to session signal */
 	g_signal_connect (plugin->shell, "save-session",
@@ -329,6 +335,9 @@ gdb_plugin_deactivate_plugin (AnjutaPlugin* plugin)
 	g_list_foreach (this->pretty_printers, (GFunc)gdb_pretty_printer_free, NULL);
 	g_list_free (this->pretty_printers);
 	this->pretty_printers = NULL;
+
+	g_free(this->gdb_executable);
+	this->gdb_executable = NULL;
 	
 	return TRUE;
 }
@@ -451,7 +460,7 @@ idebugger_load (IAnjutaDebugger *plugin, const gchar *file, const gchar* mime_ty
 	// Start debugger
 	gdb_plugin_initialize (this);
 	
-	return debugger_start (this->debugger, search_dirs, file, is_libtool);
+	return debugger_start (this->debugger, search_dirs, this->gdb_executable, file, is_libtool);
 }
 
 static gboolean
@@ -491,7 +500,7 @@ idebugger_attach (IAnjutaDebugger *plugin, pid_t pid, const GList *search_dirs,
 
 	// Start debugger
 	gdb_plugin_initialize (this);
-	debugger_start (this->debugger, search_dirs, NULL, FALSE);
+	debugger_start (this->debugger, search_dirs, this->gdb_executable, NULL, FALSE);
 	debugger_attach_process (this->debugger, pid);
 	
 	return TRUE;
@@ -1261,7 +1270,8 @@ idebugger_variable_iface_init (IAnjutaDebuggerVariableIface *iface)
 static void
 ipreferences_merge(IAnjutaPreferences* ipref, AnjutaPreferences* prefs, GError** error)
 {
-	gdb_merge_preferences (prefs, &(ANJUTA_PLUGIN_GDB (ipref)->pretty_printers));
+	gdb_merge_preferences (prefs, &(ANJUTA_PLUGIN_GDB (ipref)->pretty_printers), 
+	                       &(ANJUTA_PLUGIN_GDB(ipref)->gdb_executable));
 }
 
 static void
diff --git a/plugins/gdb/preferences.c b/plugins/gdb/preferences.c
index 8ba89c3..150749c 100644
--- a/plugins/gdb/preferences.c
+++ b/plugins/gdb/preferences.c
@@ -26,23 +26,21 @@
 
 #include "preferences.h"
 
-
 #include <libanjuta/anjuta-utils.h>
 
-
 #define BUILDER_FILE PACKAGE_DATA_DIR"/glade/anjuta-gdb.ui"
 
 #define BUILD_PREFS_DIALOG "preferences_dialog_build"
 #define GDB_PREFS_ROOT "gdb_preferences_container"
 #define GDB_PRINTER_TREEVIEW "printers_treeview"
 #define GDB_PRINTER_REMOVE_BUTTON "remove_button"
-
+#define GDB_EXECUTABLE_ENTRY "executable_entry"
 
 #define ICON_FILE "anjuta-gdb.plugin.png"
 
 #define GDB_SECTION "Gdb"
 #define GDB_PRINTER_KEY "PrettyPrinter"
-
+#define GDB_EXECUTABLE_KEY "ExecutablePath"
 
 /* column of the printer list view */
 enum {
@@ -60,7 +58,9 @@ typedef struct
 	GtkTreeView *treeview;
 	GtkListStore *model;
 	GtkWidget *remove_button;
+	GtkEntry *executable_entry;
 	GList **list;
+	gchar **path;
 } PreferenceDialog;
  
  
@@ -210,6 +210,15 @@ gdb_on_destroy_preferences (GtkWidget *object, gpointer user_data)
 	new_list = g_list_reverse (new_list);
 	*(dlg->list) = new_list;
 
+	/* Free previous path */
+	g_free(*(dlg->path));
+	*(dlg->path) = NULL;
+
+	/* Set the new path */
+	gchar *new_path = g_new0(gchar, gtk_entry_get_text_length(dlg->executable_entry)+1);
+	g_stpcpy(new_path, gtk_entry_get_text(dlg->executable_entry));
+	*(dlg->path) = new_path;	
+
 	g_free (dlg);
 }
 
@@ -324,7 +333,7 @@ gdb_on_printer_selection_changed (GtkTreeSelection *selection, gpointer user_dat
  *---------------------------------------------------------------------------*/
 
 void
-gdb_merge_preferences (AnjutaPreferences* prefs, GList **list)
+gdb_merge_preferences (AnjutaPreferences* prefs, GList **list, gchar **path)
 {
 	GtkBuilder *bxml;
 	GtkCellRenderer *renderer;
@@ -345,6 +354,7 @@ gdb_merge_preferences (AnjutaPreferences* prefs, GList **list)
 	anjuta_util_builder_get_objects (bxml,
 		GDB_PRINTER_TREEVIEW, &dlg->treeview,
 		GDB_PRINTER_REMOVE_BUTTON, &dlg->remove_button,
+	    GDB_EXECUTABLE_ENTRY, &dlg->executable_entry,
 		NULL);
 
 	/* Create tree view */	
@@ -392,6 +402,18 @@ gdb_merge_preferences (AnjutaPreferences* prefs, GList **list)
 											GDB_PP_REGISTER_COLUMN, printer->function,
 											-1);
 	}
+
+	/* Set executable entry text */
+	dlg->path = path;
+
+	if(*path != NULL)
+	{
+		gtk_entry_set_text(dlg->executable_entry, *path);
+	}
+	else
+	{
+		gtk_entry_set_text(dlg->executable_entry, DEFAULT_GDB_EXECUTABLE);
+	}
 	
 	anjuta_preferences_add_from_builder (prefs, bxml, NULL, GDB_PREFS_ROOT, _("Gdb Debugger"),  ICON_FILE);
 
@@ -465,6 +487,31 @@ gdb_save_pretty_printers (AnjutaSession *session, GList *list)
 	return FALSE;
 }
 
+gchar *
+gdb_load_executable_path (AnjutaSession *session)
+{
+	GString *path = g_string_new(NULL);
+	gchar *session_path = anjuta_session_get_string(session, GDB_SECTION, GDB_EXECUTABLE_KEY);
+
+	if(session_path == NULL || *session_path == '\0')
+	{
+		g_string_append(path, DEFAULT_GDB_EXECUTABLE);
+	}
+	else
+	{
+		g_string_append(path, session_path);
+		g_free(session_path);
+	}
+
+	return g_string_free(path, FALSE);
+}
+
+void
+gdb_save_executable_path (AnjutaSession *session, gchar *path)
+{
+	anjuta_session_set_string(session, GDB_SECTION, GDB_EXECUTABLE_KEY, path);
+}
+
 void
 gdb_pretty_printer_free (GdbPrettyPrinter *printer)
 {
diff --git a/plugins/gdb/preferences.h b/plugins/gdb/preferences.h
index a832deb..c81cbd2 100644
--- a/plugins/gdb/preferences.h
+++ b/plugins/gdb/preferences.h
@@ -28,6 +28,8 @@
 
 G_BEGIN_DECLS
 
+#define DEFAULT_GDB_EXECUTABLE "gdb"
+
 typedef struct
 {
 	gboolean enable;
@@ -38,9 +40,12 @@ typedef struct
 GList *gdb_load_pretty_printers (AnjutaSession *session);
 gboolean gdb_save_pretty_printers (AnjutaSession *session, GList *list);
 
+gchar *gdb_load_executable_path (AnjutaSession *session);
+void gdb_save_executable_path (AnjutaSession *session, gchar *path);
+
 void gdb_pretty_printer_free (GdbPrettyPrinter *printer);
 
-void gdb_merge_preferences (AnjutaPreferences* prefs, GList **list);
+void gdb_merge_preferences (AnjutaPreferences* prefs, GList **list, gchar **path);
 void gdb_unmerge_preferences (AnjutaPreferences* prefs);
 
 G_END_DECLS
