DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦f273f2d1b⟧ Ada Source

    Length: 22528 (0x5800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Debug, pragma Module_Name 4 3801, pragma Subsystem Native_Debugger, seg_001b64

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



package Debug is

    subtype Path_Name      is String;
    subtype Task_Name      is String;
    subtype Exception_Name is String;
    subtype Hex_Number     is String;

    -- A Path_Name is used to reference declarations, objects, statements,
    -- stack frames, tasks or types within progam units.

    -- Many commands take both a Path_Name and a Stack_Frame.  Though
    -- the Path_Name type allows the specification of a stack frame, the
    -- addition of the Stack_Frame parameter as a numeric value makes it
    -- possible to specify the stack frame as a numeric argument from the
    -- keyboard.  If both a Stack_Frame and Path_Name are specified, the
    -- Path_Name will be interpreted as the string Stack_Frame & Path_Name.

    -- Task_Name may be either a hex number or string name for the task.
    -- Exception_Name may be either a simple name for a predefined exception,
    -- or a pathname to an Ada identified.

    -- A Task_Name parameter of "all" specifies all tasks.  A Task_Name
    -- parameter of "" is interpreted as the control context task if explicitly
    -- set, otherwise, all tasks.  Exceptions to this rule are the commands
    -- Run and Stack, for which a Task_Name parameter of "" specifies the
    -- last task to stop if the control context is not explicitly set.


    -- Commands to terminate debugging

    procedure Debug_Off (Kill_Job : Boolean := False);
    -- Debug_Off terminates debugging on the job.  The job will run to
    -- completion if Kill_Job is false.  Otherwise, the job is terminated.

    procedure Kill (Job : Boolean := True; Debugger : Boolean := False);
    -- Kill can be used to kill either the job being debugged, or the
    -- debugger itself.


    -- Commands to query and modify program state

    procedure Put (Variable    : Path_Name := "<SELECTION>";
                   Stack_Frame : Integer   := 0);
    -- Display the value of the given object.

    procedure Stack (For_Task : Task_Name := "";
                     Start    : Integer   := 0;
                     Count    : Natural   := 0);
    -- Display Count stack frames for the specified task starting from frame
    -- Start.

    procedure Modify (New_Value   : String    := "";
                      Variable    : Path_Name := "<SELECTION>";
                      Stack_Frame : Integer   := 0);
    -- Modify the value of the given object.


    -- Commands to display ADA source

    procedure Display (Location    : Path_Name := "<SELECTION>";
                       Stack_Frame : Integer   := 0;
                       Count       : Natural   := 0);
    -- Display the source code for the given Location in the debugger window.
    -- If the Location specifies a subprogram, package, or task, display
    -- Count lines of source code including line numbers.

    procedure Source (Location : Path_Name := ""; Stack_Frame : Integer := 0);
    -- Like Definition, display the Location in an ada image.


    -- Breakpoint handling commands; break 0 represents all breaks

    procedure Break (Location         : Path_Name := "<SELECTION>";
                     Stack_Frame      : Integer   := 0;
                     Count            : Positive  := 1;
                     In_Task          : Task_Name := "";
                     Default_Lifetime : Boolean   := True);
    -- Set a break at the given location for the specified task. Count is
    -- the number of times the location is executed before the break is active.
    -- When Default_Lifetime is true, the breakpoint is temporary or permanent
    -- as specified by the Permanent_Breakpoints option; if false, its
    -- permanence is the opposite of the option.

    -- The breakpoint will be given a unique number which can be used as the
    -- breakpoint parameter of the Remove and Activate commands.

    procedure Remove (Breakpoint : Natural; Delete : Boolean := False);
    -- Deactivate the given breakpoint.  With delete false, the breakpoint
    -- can be installed again with the Activate command.
    -- Use Show (Breakpoints) to display breaks.

    procedure Activate (Breakpoint : Natural);
    -- Install a previously removed breakpoint.


    -- Commands to control all or individual tasks

    procedure Stop (Name : Task_Name := "");
    -- Stops execution of the specified task and keeps it stopped until
    -- started by a call to Execute or Run naming the task or "all".

    procedure Execute (Name : Task_Name := "");
    -- Starts execution of the specified task if stopped.

    procedure Xecute (Name : Task_Name := "");
    -- same as Execute.

    procedure Hold (Name : Task_Name := "");
    -- Stops execution of the specified task and put it in the held state
    -- until explicitly released by the command Release or a call to Execute or
    -- Run explicitly naming this task.  The held state differs from the
    -- stopped state in that Execute ("all") will not run a held task.

    procedure Release (Name : Task_Name := "");
    -- Releases a task from the held state and moves it to the stopped
    -- state.  The task can then be started by a call to Execute or Run naming
    -- the task or "all".

    type Task_Category is
       (All_Tasks,    -- all known tasks
        Blocked,      -- tasks not in debugger, but not currently running
        Held,         -- tasks held in debugger (Hold command)
        Not_Running,  -- tasks not running for any reason
        Running,      -- tasks that are currently ready to run
        Stopped);     -- tasks stopped in the debugger (eg, at breakpoints)


    procedure Task_Display (For_Task : Task_Name     := "";
                            Task_Set : Task_Category := Debug.All_Tasks);
    -- Display information about tasks in the given category.

    type Stop_Event is
       (About_To_Return,      -- stop after last statement of a subprogram
        Begin_Rendezvous,     -- stop before first statement of accept body
        End_Rendezvous,       -- stop after last statement of accept body
        Local_Statement,      -- stop before next statement at same level
        Machine_Instruction,  -- stop before next instruction
        Procedure_Entry,      -- stop before first stmt/decl of called proc
        Returned,             -- stop before next statement in caller
        Statement);           -- stop before next statement

    procedure Run (Stop_At : Stop_Event := Debug.Statement;
                   Count   : Positive   := 1;
                   In_Task : Task_Name  := "");
    -- Execute the specified task until the stop event has occurred
    -- Count times.

    procedure Clear_Stepping (For_Task : Task_Name := "");
    -- Cancel any stepping operations for the given task.


    -- Exception handling commands

    procedure Catch (Name        : Exception_Name := "<SELECTION>";
                     In_Task     : Task_Name      := "";
                     At_Location : Path_Name      := "");
    -- Stop execution when the specified exception is raised.  Can be
    -- limited to a particular task or location.  Name = "all" catches
    -- all exceptions; Name = "implicit" will catch implicitly raised
    -- exceptions.

    procedure Propagate (Name        : Exception_Name := "<SELECTION>";
                         In_Task     : Task_Name      := "";
                         At_Location : Path_Name      := "");
    -- Request that execution not be stopped when the given exception is raised.

    procedure Forget (Name        : Exception_Name := "<SELECTION>";
                      In_Task     : Task_Name      := "";
                      At_Location : Path_Name      := "");
    -- Cancel a catch or propagate request.


    -- Tracing commands

    type Trace_Event is
       (All_Events,           -- Produce message for all of below
        Call,                 -- Message for each subprogram entry
        Exception_Raised,     -- Message for each exception raised
        Machine_Instruction,  -- Message for each statement/decl
        Propagate_Exception,  -- Message for each frame popped by propagation
        Rendezvous,           -- Message for each rendezvous start and end
        Statement);           -- Message for each statement/decl

    procedure Trace (On          : Boolean     := True;
                     Event       : Trace_Event := Debug.All_Events;
                     In_Task     : Task_Name   := "";
                     At_Location : Path_Name   := "<SELECTION>";
                     Stack_Frame : Integer     := 0);
    -- Enable or disable tracing.  Tracing displays information about
    -- the execution of the given_task when the specified Trace_Events
    -- occur.

    procedure Trace_To_File (File_Name : String := ">> FILE NAME <<");
    -- Send trace output to the specified file.  The null string
    -- causes output to go to the debugger window.


    -- History commands

    procedure History_Display (Start    : Integer   := 0;
                               Count    : Integer   := 0;
                               For_Task : Task_Name := "");
    -- Display Count history entries for the given task.  If Start is positive,
    -- it specifies the starting location from the newest entry; if negative,
    -- from the oldest entry.

    procedure Take_History (On          : Boolean     := True;
                            Event       : Trace_Event := Debug.All_Events;
                            For_Task    : Task_Name   := "";
                            At_Location : Path_Name   := "<SELECTION>";
                            Stack_Frame : Integer     := 0);
    -- Enable or disable history taking for the given task and location.


    -- Commands to query debugger state

    type Context_Type is (Control, Evaluation);

    procedure Context (Set         : Context_Type := Debug.Control;
                       To_Be       : Path_Name    := "<SELECTION>";
                       Stack_Frame : Integer      := 0);
    -- Set either the control or evaluation context.  Control context
    -- is generally used when a Task_Name parameter of "" is specified.
    -- The evaluation context is used as a prefix for unqualified location
    -- and object names.


    type Option is
       (Addresses,                 -- Include machine information
        Break_At_Creation,         -- Tasks stop before first decl
        Declaration_Display,       -- Include declarations in program display
        Delete_Temporary_Breaks,   -- Delete (vs deactivate) temp breakpoints
        Display_Creation,          -- Trace message for each task creation
        Echo_Commands,             -- Echo command in debugger window
        Freeze_Tasks,              -- Stop all tasks when one stops
        Include_Packages,          -- Task display includes packages
        Interpret_Control_Words,   -- Memory display for control stacks
        Kill_Old_Jobs,             -- Kill last debug job when next is begun
        Machine_Level,             -- Allow certain machine level operations
        No_History_Timestamps,     -- History display option
        Optimize_Generic_History,  -- No generic instance in history
        Permanent_Breakpoints,     -- Default breakpoints to permanent (vs temp)
        Put_Locals,                -- Put displays locals as well as parameters
        Qualify_Stack_Names,       -- Use fully qualified names in stack display
        Require_Debug_Off,         -- Debug_Off needed before debug next job
        Save_Exceptions,           -- Save exception-handling state across jobs
        Show_Location,             -- Display source in image when task stops
        Timestamps);               -- Include timestamps in command log


    procedure Enable  (Variable : Option; On : Boolean:= True);
    procedure Disable (Variable : Option; On : Boolean := False) renames Enable;
    -- Enable or disable the specified option.

    type Numeric is
       (Display_Count,    -- Default for Count in Display command
        Display_Level,    -- Number of levels to expand Put command's data
        Element_Count,    -- Max elements of array for Put to display
        First_Element,    -- Offset for start of Put's array display
        History_Count,    -- Default for Count in History_Display
        History_Entries,  -- History buffer size
        History_Start,    -- Default for Start in History_Display
        Memory_Count,     -- Default for Memory_Dump Count parameter
        Pointer_Level,    -- Number of pointers to expand in Put's data
        Stack_Count,      -- Default frame Count for Stack command
        Stack_Start);     -- Default for Start in Stack command

    procedure Set_Value (Variable : Numeric; To_Value : Integer);

    procedure Flag (Variable : String := ""; To_Value : String := "TRUE");

    type State_Type is (All_State, Breakpoints, Contexts,
                        Exceptions, Flags, Histories, Libraries,
                        Special_Types, Steps, Stops_And_Holds, Traces,
                        -- internal debugger state
                        Active_Items, Exception_Cache, Inner_State, Statistics);

    procedure Show (Values_For : State_Type := Debug.Breakpoints);
    -- Display information about various debugger facilities.

    type Information_Type is (Exceptions, Rendezvous, Space);

    procedure Information (Info_Type : Information_Type := Debug.Exceptions;
                           For_Task  : Task_Name        := "");
    -- Display information about the specified task.

    procedure Comment (Information : String := "");
    -- place a comment in the debugger window.

    procedure Set_Task_Name (For_Task : Task_Name := "";
                             To_Name  : String    := "");
    -- Set a task synonym for the specified task for use as a Task_Name
    -- parameter to commands.

    procedure Convert (Number : String := ""; To_Base : Natural := 0);
    -- Hex/decimal conversion.


    procedure Reset_Defaults;
    -- Reset flags to initial values.
    -- Unregister all special types.

    procedure Current_Debugger (Target : String := "");
    -- Set current debugger to the current window, or Target if
    -- specified.  Subsequent calls to Debug will be directed to
    -- the specified target or native debugger.


    -- Machine-level commands

    -- For the following commands, address format is #Segment, #Offset
    -- memory format is one of CONTROL, TYP, QUEUE, DATA, IMPORT, CODE, SYSTEM

    procedure Memory_Display (Address : String  := "";
                              Count   : Natural := 0;
                              Format  : String  := "DATA");

    procedure Location_To_Address (Location    : Path_Name := "<SELECTION>";
                                   Stack_Frame : Integer   := 0);
    procedure Address_To_Location (Address : String := "");
    procedure Exception_To_Name   (Implementation_Image : String := "");

    procedure Memory_Modify (Address : String  := ">>HEX ADDRESS<<";
                             Value   : String  := ">>HEX VALUE<<";
                             Width   : Natural := 0;
                             Format  : String  := "DATA");
    -- The format string is used to distinguish various addressing modes.
    -- Width is interpreted according to the machine, where 0 is the
    -- natural word width.

    procedure Register_Display (Name        : String    := "";
                                For_Task    : Task_Name := "";
                                Stack_Frame : Integer   := 0;
                                Format      : String    := "");
    -- "" implies display of interesting registers.
    -- "ALL" displays all possible machine registers.

    procedure Register_Modify (Name        : String    := ">>REGISTER NAME<<";
                               Value       : String    := ">>HEX VALUE<<";
                               For_Task    : Task_Name := "";
                               Stack_Frame : Integer   := 0;
                               Format      : String    := "");


    procedure Object_Location (Variable : Path_Name := "<SELECTION>";
                               Options  : String    := "");
    -- Display the machine location of the given Object.
    -- Options describe various target specific kinds of information
    -- to display.


    procedure Attach_Process (Name : String := ""; Options : String := "");
    -- Register the named process for control under the current debugger.


    procedure Target_Request (Options : String := ""; To_File : String := "");
    -- Perform target specific requests.
    -- Output can be directed to the Debugger Window or to some other
    -- file or device. Null value indicates debugger window.


    procedure Connect (Remote_Machine : String := ""; Target : String := "");
    -- Hook up a debugger to given machine.
    -- Target should specify a target key - "" implies we can calculate
    -- the target from the remote machine name.

    procedure Invoke (Main_Unit : String  := "<IMAGE>";
                      Options   : String  := "";
                      Spawn_Job : Boolean := True);
    -- Find or start a debugger to the given machine, and start debugging
    -- the indicated job.

    procedure Reconnect;
    -- attempt to reestablish communication after failure

    pragma Subsystem (Native_Debugger);
    pragma Module_Name (4, 3801);

end Debug;

E3 Meta Data

    nblk1=15
    nid=0
    hdr6=2a
        [0x00] rec0=17 rec1=00 rec2=01 rec3=042
        [0x01] rec0=00 rec1=00 rec2=15 rec3=01c
        [0x02] rec0=18 rec1=00 rec2=02 rec3=02a
        [0x03] rec0=16 rec1=00 rec2=03 rec3=04e
        [0x04] rec0=14 rec1=00 rec2=04 rec3=024
        [0x05] rec0=18 rec1=00 rec2=05 rec3=024
        [0x06] rec0=15 rec1=00 rec2=06 rec3=092
        [0x07] rec0=16 rec1=00 rec2=07 rec3=018
        [0x08] rec0=16 rec1=00 rec2=08 rec3=01e
        [0x09] rec0=11 rec1=00 rec2=09 rec3=070
        [0x0a] rec0=19 rec1=00 rec2=0a rec3=024
        [0x0b] rec0=11 rec1=00 rec2=0b rec3=056
        [0x0c] rec0=0f rec1=00 rec2=0c rec3=06c
        [0x0d] rec0=00 rec1=00 rec2=14 rec3=002
        [0x0e] rec0=13 rec1=00 rec2=0d rec3=026
        [0x0f] rec0=15 rec1=00 rec2=0e rec3=05c
        [0x10] rec0=1b rec1=00 rec2=0f rec3=066
        [0x11] rec0=12 rec1=00 rec2=10 rec3=040
        [0x12] rec0=00 rec1=00 rec2=13 rec3=004
        [0x13] rec0=16 rec1=00 rec2=11 rec3=07a
        [0x14] rec0=16 rec1=00 rec2=12 rec3=000
    tail 0x20100ef447da18d3274e6 0x42a00088462065003