GTK-Debugger

- Functionality now matches win32 debugger
- Further code review/rewrite/simplification
- Added more comment headings
This commit is contained in:
Couriersud 2010-01-26 01:27:35 +00:00
parent 50aaf76de1
commit 8afbfd9dca
7 changed files with 834 additions and 215 deletions

View File

@ -84,6 +84,8 @@ dview_new (const gchar *widget_name, const gchar *string1, const gchar *string2,
void
on_run_to_cursor_activate (GtkWidget *win);
void
on_set_breakpoint_at_cursor_activate (GtkWidget *win);
gboolean
on_disasm_button_press_event (GtkWidget *widget,
@ -100,3 +102,9 @@ on_memoryview_key_press_event (GtkWidget *widget,
GdkEventKey *event,
gpointer user_data);
void
on_logical_addresses_group_changed (GtkWidget *win);
void
on_physical_addresses_group_changed (GtkWidget *win);

View File

@ -844,3 +844,211 @@ dview_new (gchar *widget_name, gchar *string1, gchar *string2,
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
void
on_logical_addresses_group_changed (GtkRadioMenuItem *radiomenuitem,
gpointer user_data)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
void
on_physical_addresses_group_changed (GtkRadioMenuItem *radiomenuitem,
gpointer user_data)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}
GtkWidget*
dview_new (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2)
{
}

View File

@ -53,6 +53,7 @@ create_debugmain (void)
GtkWidget *exit;
GtkWidget *item1;
GtkWidget *item1_menu;
GtkWidget *set_breakpoint_at_cursor;
GtkWidget *run_to_cursor;
GtkWidget *separator7;
GSList *raw_opcodes_group = NULL;
@ -229,10 +230,18 @@ create_debugmain (void)
gtk_widget_set_name (item1_menu, "item1_menu");
gtk_menu_item_set_submenu (GTK_MENU_ITEM (item1), item1_menu);
set_breakpoint_at_cursor = gtk_menu_item_new_with_mnemonic ("Set breakpoint at cursor");
gtk_widget_set_name (set_breakpoint_at_cursor, "set_breakpoint_at_cursor");
gtk_widget_show (set_breakpoint_at_cursor);
gtk_container_add (GTK_CONTAINER (item1_menu), set_breakpoint_at_cursor);
run_to_cursor = gtk_menu_item_new_with_mnemonic ("Run to cursor");
gtk_widget_set_name (run_to_cursor, "run_to_cursor");
gtk_widget_show (run_to_cursor);
gtk_container_add (GTK_CONTAINER (item1_menu), run_to_cursor);
gtk_widget_add_accelerator (run_to_cursor, "activate", accel_group,
GDK_F4, (GdkModifierType) 0,
GTK_ACCEL_VISIBLE);
separator7 = gtk_separator_menu_item_new ();
gtk_widget_set_name (separator7, "separator7");
@ -349,6 +358,9 @@ create_debugmain (void)
g_signal_connect_swapped ((gpointer) exit, "activate",
G_CALLBACK (on_exit_activate),
GTK_OBJECT (debugmain));
g_signal_connect_swapped ((gpointer) set_breakpoint_at_cursor, "activate",
G_CALLBACK (on_set_breakpoint_at_cursor_activate),
GTK_OBJECT (debugmain));
g_signal_connect_swapped ((gpointer) run_to_cursor, "activate",
G_CALLBACK (on_run_to_cursor_activate),
GTK_OBJECT (debugmain));
@ -390,6 +402,7 @@ create_debugmain (void)
GLADE_HOOKUP_OBJECT (debugmain, exit, "exit");
GLADE_HOOKUP_OBJECT (debugmain, item1, "item1");
GLADE_HOOKUP_OBJECT (debugmain, item1_menu, "item1_menu");
GLADE_HOOKUP_OBJECT (debugmain, set_breakpoint_at_cursor, "set_breakpoint_at_cursor");
GLADE_HOOKUP_OBJECT (debugmain, run_to_cursor, "run_to_cursor");
GLADE_HOOKUP_OBJECT (debugmain, separator7, "separator7");
GLADE_HOOKUP_OBJECT (debugmain, raw_opcodes, "raw_opcodes");
@ -440,6 +453,10 @@ create_memorywin (void)
GtkWidget *chunks_2;
GtkWidget *chunks_4;
GtkWidget *separator5;
GSList *logical_addresses_group = NULL;
GtkWidget *logical_addresses;
GtkWidget *physical_addresses;
GtkWidget *separatormenuitem1;
GtkWidget *reverse;
GtkWidget *separator6;
GtkWidget *ibpl;
@ -629,7 +646,6 @@ create_memorywin (void)
gtk_widget_add_accelerator (chunks_2, "activate", accel_group,
GDK_2, (GdkModifierType) GDK_CONTROL_MASK,
GTK_ACCEL_VISIBLE);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (chunks_2), TRUE);
chunks_4 = gtk_radio_menu_item_new_with_mnemonic (chunks_1_group, "4-bytes chunks");
chunks_1_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (chunks_4));
@ -639,7 +655,6 @@ create_memorywin (void)
gtk_widget_add_accelerator (chunks_4, "activate", accel_group,
GDK_4, (GdkModifierType) GDK_CONTROL_MASK,
GTK_ACCEL_VISIBLE);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (chunks_4), TRUE);
separator5 = gtk_separator_menu_item_new ();
gtk_widget_set_name (separator5, "separator5");
@ -647,6 +662,32 @@ create_memorywin (void)
gtk_container_add (GTK_CONTAINER (options_menu), separator5);
gtk_widget_set_sensitive (separator5, FALSE);
logical_addresses = gtk_radio_menu_item_new_with_mnemonic (logical_addresses_group, "Logical Addresses");
logical_addresses_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (logical_addresses));
gtk_widget_set_name (logical_addresses, "logical_addresses");
gtk_widget_show (logical_addresses);
gtk_container_add (GTK_CONTAINER (options_menu), logical_addresses);
gtk_widget_add_accelerator (logical_addresses, "activate", accel_group,
GDK_l, (GdkModifierType) GDK_CONTROL_MASK,
GTK_ACCEL_VISIBLE);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (logical_addresses), TRUE);
physical_addresses = gtk_radio_menu_item_new_with_mnemonic (logical_addresses_group, "Physical Addresses");
logical_addresses_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (physical_addresses));
gtk_widget_set_name (physical_addresses, "physical_addresses");
gtk_widget_show (physical_addresses);
gtk_container_add (GTK_CONTAINER (options_menu), physical_addresses);
gtk_widget_add_accelerator (physical_addresses, "activate", accel_group,
GDK_y, (GdkModifierType) GDK_CONTROL_MASK,
GTK_ACCEL_VISIBLE);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (physical_addresses), TRUE);
separatormenuitem1 = gtk_separator_menu_item_new ();
gtk_widget_set_name (separatormenuitem1, "separatormenuitem1");
gtk_widget_show (separatormenuitem1);
gtk_container_add (GTK_CONTAINER (options_menu), separatormenuitem1);
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
reverse = gtk_check_menu_item_new_with_mnemonic ("Reverse View");
gtk_widget_set_name (reverse, "reverse");
gtk_widget_show (reverse);
@ -751,6 +792,12 @@ create_memorywin (void)
g_signal_connect_swapped ((gpointer) chunks_4, "activate",
G_CALLBACK (on_chunks_4_activate),
GTK_OBJECT (memorywin));
g_signal_connect_swapped ((gpointer) logical_addresses, "group_changed",
G_CALLBACK (on_logical_addresses_group_changed),
GTK_OBJECT (memorywin));
g_signal_connect_swapped ((gpointer) physical_addresses, "group_changed",
G_CALLBACK (on_physical_addresses_group_changed),
GTK_OBJECT (memorywin));
g_signal_connect_swapped ((gpointer) reverse, "activate",
G_CALLBACK (on_reverse_activate),
GTK_OBJECT (memorywin));
@ -796,6 +843,9 @@ create_memorywin (void)
GLADE_HOOKUP_OBJECT (memorywin, chunks_2, "chunks_2");
GLADE_HOOKUP_OBJECT (memorywin, chunks_4, "chunks_4");
GLADE_HOOKUP_OBJECT (memorywin, separator5, "separator5");
GLADE_HOOKUP_OBJECT (memorywin, logical_addresses, "logical_addresses");
GLADE_HOOKUP_OBJECT (memorywin, physical_addresses, "physical_addresses");
GLADE_HOOKUP_OBJECT (memorywin, separatormenuitem1, "separatormenuitem1");
GLADE_HOOKUP_OBJECT (memorywin, reverse, "reverse");
GLADE_HOOKUP_OBJECT (memorywin, separator6, "separator6");
GLADE_HOOKUP_OBJECT (memorywin, ibpl, "ibpl");
@ -837,6 +887,9 @@ create_disasmwin (void)
GtkWidget *menuitem19;
GtkWidget *menuitem20;
GtkWidget *menuitem20_menu;
GtkWidget *set_breakpoint_at_cursor;
GtkWidget *run_to_cursor1;
GtkWidget *separatormenuitem4;
GSList *raw_opcodes_group = NULL;
GtkWidget *raw_opcodes;
GtkWidget *enc_opcodes;
@ -1008,6 +1061,25 @@ create_disasmwin (void)
gtk_widget_set_name (menuitem20_menu, "menuitem20_menu");
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem20), menuitem20_menu);
set_breakpoint_at_cursor = gtk_menu_item_new_with_mnemonic ("Set breakpoint at cursor");
gtk_widget_set_name (set_breakpoint_at_cursor, "set_breakpoint_at_cursor");
gtk_widget_show (set_breakpoint_at_cursor);
gtk_container_add (GTK_CONTAINER (menuitem20_menu), set_breakpoint_at_cursor);
run_to_cursor1 = gtk_menu_item_new_with_mnemonic ("Run to cursor");
gtk_widget_set_name (run_to_cursor1, "run_to_cursor1");
gtk_widget_show (run_to_cursor1);
gtk_container_add (GTK_CONTAINER (menuitem20_menu), run_to_cursor1);
gtk_widget_add_accelerator (run_to_cursor1, "activate", accel_group,
GDK_F4, (GdkModifierType) 0,
GTK_ACCEL_VISIBLE);
separatormenuitem4 = gtk_separator_menu_item_new ();
gtk_widget_set_name (separatormenuitem4, "separatormenuitem4");
gtk_widget_show (separatormenuitem4);
gtk_container_add (GTK_CONTAINER (menuitem20_menu), separatormenuitem4);
gtk_widget_set_sensitive (separatormenuitem4, FALSE);
raw_opcodes = gtk_radio_menu_item_new_with_mnemonic (raw_opcodes_group, "Raw Opcodes");
raw_opcodes_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (raw_opcodes));
gtk_widget_set_name (raw_opcodes, "raw_opcodes");
@ -1103,6 +1175,12 @@ create_disasmwin (void)
g_signal_connect_swapped ((gpointer) menuitem19, "activate",
G_CALLBACK (on_exit_activate),
GTK_OBJECT (disasmwin));
g_signal_connect_swapped ((gpointer) set_breakpoint_at_cursor, "activate",
G_CALLBACK (on_set_breakpoint_at_cursor_activate),
GTK_OBJECT (disasmwin));
g_signal_connect_swapped ((gpointer) run_to_cursor1, "activate",
G_CALLBACK (on_run_to_cursor_activate),
GTK_OBJECT (disasmwin));
g_signal_connect_swapped ((gpointer) raw_opcodes, "activate",
G_CALLBACK (on_raw_opcodes_activate),
GTK_OBJECT (disasmwin));
@ -1141,6 +1219,9 @@ create_disasmwin (void)
GLADE_HOOKUP_OBJECT (disasmwin, menuitem19, "menuitem19");
GLADE_HOOKUP_OBJECT (disasmwin, menuitem20, "menuitem20");
GLADE_HOOKUP_OBJECT (disasmwin, menuitem20_menu, "menuitem20_menu");
GLADE_HOOKUP_OBJECT (disasmwin, set_breakpoint_at_cursor, "set_breakpoint_at_cursor");
GLADE_HOOKUP_OBJECT (disasmwin, run_to_cursor1, "run_to_cursor1");
GLADE_HOOKUP_OBJECT (disasmwin, separatormenuitem4, "separatormenuitem4");
GLADE_HOOKUP_OBJECT (disasmwin, raw_opcodes, "raw_opcodes");
GLADE_HOOKUP_OBJECT (disasmwin, enc_opcodes, "enc_opcodes");
GLADE_HOOKUP_OBJECT (disasmwin, comments, "comments");

View File

@ -171,12 +171,21 @@
<property name="use_underline">True</property>
<child>
<widget class="GtkMenu" id="item1_menu">
<child>
<widget class="GtkMenuItem" id="set_breakpoint_at_cursor">
<property name="visible">True</property>
<property name="label" translatable="yes">Set breakpoint at cursor</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_set_breakpoint_at_cursor_activate" object="debugmain"/>
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="run_to_cursor">
<property name="visible">True</property>
<property name="label" translatable="yes">Run to cursor</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_run_to_cursor_activate" object="debugmain"/>
<accelerator key="F4" signal="activate"/>
</widget>
</child>
<child>
@ -267,6 +276,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="has_focus">True</property>
<property name="invisible_char">&#x25CF;</property>
<property name="activates_default">True</property>
</widget>
<packing>
@ -471,7 +481,6 @@
<property name="visible">True</property>
<property name="label" translatable="yes">2-bytes chunks</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="group">chunks_1</property>
<signal name="activate" handler="on_chunks_2_activate" object="memorywin"/>
<accelerator key="2" signal="activate" modifiers="GDK_CONTROL_MASK"/>
@ -482,7 +491,6 @@
<property name="visible">True</property>
<property name="label" translatable="yes">4-bytes chunks</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="group">chunks_1</property>
<signal name="activate" handler="on_chunks_4_activate" object="memorywin"/>
<accelerator key="4" signal="activate" modifiers="GDK_CONTROL_MASK"/>
@ -493,6 +501,32 @@
<property name="visible">True</property>
</widget>
</child>
<child>
<widget class="GtkRadioMenuItem" id="logical_addresses">
<property name="visible">True</property>
<property name="label" translatable="yes">Logical Addresses</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<signal name="group_changed" handler="on_logical_addresses_group_changed" object="memorywin"/>
<accelerator key="l" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</widget>
</child>
<child>
<widget class="GtkRadioMenuItem" id="physical_addresses">
<property name="visible">True</property>
<property name="label" translatable="yes">Physical Addresses</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="group">logical_addresses</property>
<signal name="group_changed" handler="on_physical_addresses_group_changed" object="memorywin"/>
<accelerator key="y" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</widget>
</child>
<child>
<widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
<property name="visible">True</property>
</widget>
</child>
<child>
<widget class="GtkCheckMenuItem" id="reverse">
<property name="visible">True</property>
@ -543,6 +577,7 @@
<widget class="GtkEntry" id="edit">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">&#x25CF;</property>
</widget>
<packing>
<property name="position">0</property>
@ -743,6 +778,28 @@
<property name="use_underline">True</property>
<child>
<widget class="GtkMenu" id="menuitem20_menu">
<child>
<widget class="GtkMenuItem" id="set_breakpoint_at_cursor">
<property name="visible">True</property>
<property name="label" translatable="yes">Set breakpoint at cursor</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_set_breakpoint_at_cursor_activate" object="disasmwin"/>
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="run_to_cursor1">
<property name="visible">True</property>
<property name="label" translatable="yes">Run to cursor</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_run_to_cursor_activate" object="disasmwin"/>
<accelerator key="F4" signal="activate"/>
</widget>
</child>
<child>
<widget class="GtkSeparatorMenuItem" id="separatormenuitem4">
<property name="visible">True</property>
</widget>
</child>
<child>
<widget class="GtkRadioMenuItem" id="raw_opcodes">
<property name="visible">True</property>
@ -793,6 +850,7 @@
<widget class="GtkEntry" id="edit">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">&#x25CF;</property>
</widget>
<packing>
<property name="position">0</property>

File diff suppressed because it is too large Load Diff

View File

@ -407,8 +407,8 @@ GtkWidget *dview_new(const gchar *widget_name, const gchar *string1, const gchar
return wdv;
}
void dview_set_debug_view(DView *dv, running_machine *machine, int type, debug_view **dwp)
void dview_set_debug_view(DView *dv, running_machine *machine, int type)
{
dv->view = debug_view_alloc(machine, type, dview_update, dv);
*dwp = dv->view;
dv->dv_type = type;
}

View File

@ -39,14 +39,15 @@ struct _DView
int hsz, vsz;
int hs, vs;
int tr, tc;
debug_view *view;
gchar *name;
PangoLayout *playout;
GdkGC *gc;
debug_view *view;
int dv_type;
};
GtkWidget *dview_new(const gchar *widget_name, const gchar *string1, const gchar *string2, gint int1, gint int2);
void dview_set_debug_view(DView *dv, running_machine *machine, int type, debug_view **dwp);
void dview_set_debug_view(DView *dv, running_machine *machine, int type);
#endif