GNOME::Debugger::Commander proposal



/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
#ifndef __DEBUGGER_COMMANDER_IDL__
#define __DEBUGGER_COMMANDER_IDL__

module GNOME {
    module Debugger {
        interface EventSink;

        interface Process : GNOME::Unknown {
            /* Process State */
            enum State {
                UNKNOWN,
                INTERPRETER,
                CORE_FILE,
                ATTACHED,
                RUNNING,
                STOPPED
            };

            State get_state ();

            /* Not an executable process (ie. core file) */
            exception NotExecutable {};

            /* Not attached to a process */
            exception NotAttached {};

            /* Process not currently running */
            exception NotRunning {};

            /* Stack */
            StackFrame get_frame (in long id)
                raises (NotExecutable, NotRunning);

            Stack get_backtrace ()
                raises (NotExecutable, NotRunning);

            /* Running */
            void run () raises (NotExecutable);
            void stop () raises (NotExecutable, NotRunning);
            void restart () raises (NotExecutable, NotRunning);
            void step_over () raises (NotExecutable, NotRunning);
            void step_into () raises (NotExecutable, NotRunning);
            void step_out () raises (NotExecutable, NotRunning);

            /* Detaching/Killing */
            void detach () raises (NotAttached);
            void kill () raises (NotExecutable);
        };

        interface Program : GNOME::Unknown {
            /* Processes */
            Process attach (in short pid);
            Process execute (in string args);
            Process load_corefile (in string corefile_name);

            /* Source Files */
            source_file_list get_sources ();

            void show_source (in string source_name);

            /* Breakpoints */
            void set_breakpoint (in string file_name,
                                 in long line_num,
                                 in string condition);
            void set_breakpoint_function (in string file_name,
                                          in string function_name,
                                          in string condition);
            void enable_breakpoint (in long bp_num);
            void disable_breakpoint (in long bp_num);
            void delete_breakpoint (in long bp_num);
        };

        interface Commander : GNOME::Unknown {
            void register_event_sink (in EventSink sink);
            EventSink get_event_sink ();
            void unregister_event_sink ();
            
            Program load_binary (in string binary_name);
        };
    };
};

#endif /* __DEBUGGER_COMMANDER_IDL__ */




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]