/* Chrysalide - Outil d'analyse de fichiers binaires * debug.c - gestion du menu 'Débogage' * * Copyright (C) 2011-2017 Cyrille Bagard * * This file is part of Chrysalide. * * Chrysalide is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Chrysalide is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "debug.h" #include #include #include "../agroup.h" #include "../../gtkext/easygtk.h" /* Réagit avec le menu "Débogage -> Continuer". */ static void mcb_debug_continue(GtkMenuItem *, GObject *); /* Réagit avec le menu "Débogage -> Continuer jusqu'à...". */ static void mcb_debug_continue_to(GtkMenuItem *, GObject *); /* Réagit avec le menu "Débogage -> Mettre en pause". */ static void mcb_debug_pause(GtkMenuItem *, GObject *); /* Réagit avec le menu "Débogage -> Redémarrer". */ static void mcb_debug_restart(GtkMenuItem *, GObject *); /* Réagit avec le menu "Débogage -> Arrêter". */ static void mcb_debug_close(GtkMenuItem *, GObject *); /* Réagit avec le menu "Débogage -> Avancer pas à pas en ...". */ static void mcb_debug_step_into(GtkMenuItem *, GObject *); /* Réagit avec le menu "Débogage -> Avancer pas à pas en ...". */ static void mcb_debug_step_over(GtkMenuItem *, GObject *); /* Réagit avec le menu "Débogage -> Visiter les blocs ...". */ static void mcb_debug_visit_blocks_into(GtkMenuItem *, GObject *); /* Réagit avec le menu "Débogage -> Visiter les blocs ...". */ static void mcb_debug_visit_blocks_over(GtkMenuItem *, GObject *); /* Réagit avec le menu "Débogage -> Continuer jusqu'au retour". */ static void mcb_debug_return(GtkMenuItem *, GObject *); /* Réagit avec le menu "Débogage -> Options de débogage". */ static void mcb_debug_options(GtkMenuItem *, GObject *); /****************************************************************************** * * * Paramètres : ref = espace de référencement global. * * * * Description : Construit le menu "Aide". * * * * Retour : Panneau de menus mis en place. * * * * Remarques : - * * * ******************************************************************************/ GtkWidget *build_menu_debug(GObject *ref) { GtkWidget *result; /* Support à retourner */ GtkWidget *menubar; /* Support pour éléments */ GtkWidget *submenuitem; /* Sous-élément de menu */ result = gtk_menu_item_new_with_mnemonic(_("_Debug")); gtk_widget_show(result); menubar = qck_create_menu(GTK_MENU_ITEM(result)); submenuitem = qck_create_menu_item(ref, "mnu_debug_continue", _("Continue"), G_CALLBACK(mcb_debug_continue), ref); add_accelerator_to_widget(submenuitem, "F9"); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_item(ref, "mnu_debug_continue_to", _("Continue to selection"), G_CALLBACK(mcb_debug_continue_to), ref); add_accelerator_to_widget(submenuitem, "F9"); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_item(ref, "mnu_debug_pause", _("Pause"), G_CALLBACK(mcb_debug_pause), ref); add_accelerator_to_widget(submenuitem, "F10"); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_item(ref, "mnu_debug_restart", _("Restart"), G_CALLBACK(mcb_debug_restart), ref); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_item(ref, "mnu_debug_close", _("Close"), G_CALLBACK(mcb_debug_close), ref); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_separator(); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_item(ref, "mnu_debug_step_into", _("Step into"), G_CALLBACK(mcb_debug_step_into), ref); add_accelerator_to_widget(submenuitem, "F7"); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_item(ref, "mnu_debug_step_over", _("Step over"), G_CALLBACK(mcb_debug_step_over), ref); add_accelerator_to_widget(submenuitem, "F7"); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_item(ref, "mnu_debug_basic", _("Visit basic blocks into"), G_CALLBACK(mcb_debug_visit_blocks_into), ref); add_accelerator_to_widget(submenuitem, "F8"); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_item(ref, "mnu_debug_basic", _("Visit basic blocks over"), G_CALLBACK(mcb_debug_visit_blocks_over), ref); add_accelerator_to_widget(submenuitem, "F8"); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_item(ref, "mnu_debug_return", _("Continue until return"), G_CALLBACK(mcb_debug_return), ref); add_accelerator_to_widget(submenuitem, "F12"); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_separator(); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_item(ref, "mnu_debug_options", _("Debugging options..."), G_CALLBACK(mcb_debug_options), ref); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); return result; } /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * * ref = adresse de l'espace de référencement global. * * * * Description : Réagit avec le menu "Débogage -> Continuer". * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ static void mcb_debug_continue(GtkMenuItem *menuitem, GObject *ref) { } /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * * ref = adresse de l'espace de référencement global. * * * * Description : Réagit avec le menu "Débogage -> Continuer jusqu'à...". * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ static void mcb_debug_continue_to(GtkMenuItem *menuitem, GObject *ref) { } /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * * ref = adresse de l'espace de référencement global. * * * * Description : Réagit avec le menu "Débogage -> Mettre en pause". * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ static void mcb_debug_pause(GtkMenuItem *menuitem, GObject *ref) { } /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * * ref = adresse de l'espace de référencement global. * * * * Description : Réagit avec le menu "Débogage -> Redémarrer". * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ static void mcb_debug_restart(GtkMenuItem *menuitem, GObject *ref) { } /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * * ref = adresse de l'espace de référencement global. * * * * Description : Réagit avec le menu "Débogage -> Arrêter". * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ static void mcb_debug_close(GtkMenuItem *menuitem, GObject *ref) { } /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * * ref = adresse de l'espace de référencement global. * * * * Description : Réagit avec le menu "Débogage -> Avancer pas à pas en ...". * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ static void mcb_debug_step_into(GtkMenuItem *menuitem, GObject *ref) { } /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * * ref = adresse de l'espace de référencement global. * * * * Description : Réagit avec le menu "Débogage -> Avancer pas à pas en ...". * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ static void mcb_debug_step_over(GtkMenuItem *menuitem, GObject *ref) { } /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * * ref = adresse de l'espace de référencement global. * * * * Description : Réagit avec le menu "Débogage -> Visiter les blocs ...". * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ static void mcb_debug_visit_blocks_into(GtkMenuItem *menuitem, GObject *ref) { } /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * * ref = adresse de l'espace de référencement global. * * * * Description : Réagit avec le menu "Débogage -> Visiter les blocs ...". * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ static void mcb_debug_visit_blocks_over(GtkMenuItem *menuitem, GObject *ref) { } /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * * ref = adresse de l'espace de référencement global. * * * * Description : Réagit avec le menu "Débogage -> Continuer jusqu'au retour". * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ static void mcb_debug_return(GtkMenuItem *menuitem, GObject *ref) { } /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * * ref = adresse de l'espace de référencement global. * * * * Description : Réagit avec le menu "Débogage -> Options de débogage". * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ static void mcb_debug_options(GtkMenuItem *menuitem, GObject *ref) { }