Sei sulla pagina 1di 3

A new Argus Debugger has been installed.

The two biggest


differences arethe availablility and use of type information and
a new command interface.

This is a brief introduction to the changes.

1) Type Information

Full type information is available and used. This means all


invocations are type checked, print operations of clusters are
used (if available), sugars can be used for fetch, store, get_,
and set_, etc.

2) Command Interface

The command interface is similar, with many of the same


commands. The "help" command will give you a list of them with
brief descriptions. Options can now be combined so that, for
example, "frames/owns/variables 5" will show frame 5 once with
owns and local variables included.

3) Editing

Point to the "?" in the upper right hand corner of your Winsrv
window to get information about command line editing, moving
around in a window, and controlling placement of windows. In
general normal Ted like editing can be used.

4) Escape and "?"

You can in general type "?" at any time to see what


possibilities are available (you may get an excessive amount in
some cases, use ^O to suppress output). The Escape key can be
used to do completion when only one possibility exists.

5) Arguments and Qualifiers

Arguments of commands should generally be intuitive. Some


special forms take qualifiers:

routine:9 The routine in frame 9.


routine:foo#3 The routine in slot 3 of "foo".
frame:foo The frame containing routine "foo".
exception:bar.3 The exception "bar" that returns three values.

These qualifiers can be abbreviated to unique prefixes (e.g., r:


for routine:).

6) Slots (#)

Slots are specified using '#'. Examples are:

foo#9 Slot 9 of foo.


foo#1-3 Slots 1, 2, and 3 of foo.
foo#int$* All slots of foo that call operations of int.
foo#xy*z All slots of foo that call routines matching "xy*z".
foo#(1, int$*, 10-20)
Slots 1, 10 through 20, and all that call operations
of int.

7) Variables (args, locals, owns) (@)

Variables (arguments, locals, and owns) can be specified useing '@'.

Examples are:

var@3 Variable "var" in frame 3.


var@foo Variable "var" in the top most frame containing
routine foo, or (if no such frame) own "var"
in cluster foo.
var@rou:3 Variable "var" of the routine in frame 3.

Note that the "var@foo" form will look for owns where "var" would only
look for arguments and locals.

8) Results

Results (of procedures, iterators, or signals) can be obtained


using the "resn" syntax where "n" is an integer greater than 0.
Thus "res2" will give the second result.

9) Assignment and Aliases (:= , :==)

The assignment operator is ":=". Note that sugars can be used


on the left hand side (e.g., "r.val := 3" or "a[foo(1, 2)] := true").

Aliasing can be done using ":==". Sugars are NOT allowed on the
left hand side.

10) Filenames

Two commands take filename arguments ("read" and "script"). The


filename must be given as a string. For example:
read "/usr/someone/debug.input"

11) Evaluation by Default

You can give an expression (or assignment) to be evaluated


without typeing the "evaluate" command first. The debugger will
try to be smart about this (i.e., it first tries to parse the
line as a command, if that fails it tries parsing it as an
expression), but it may get confused and give you strange error
messages.

12) Special Routines

There are some special routines to help work with strict type
checking:

up[t](foo) Returns foo as an object of type t (this is not


currently type checked so "up" can be used to
convert an object to any arbitrary type).
down(foo) Returns foo as an object of the rep type of foo.
type(foo) Returns the type of foo.
rep[t]() Returns the rep type of t.

13) EQUATES

You can make use of equates from equate modules with the EQUATES
command. For example:

equates "/usr/argus/lib" sysaddrs

will imporr the sysaddrs equates from the /usr/argus/lib.lb


library. For example the "sysaddrs$startpc" constant can be
referenced as "startpc" and it's value will print as "startpc"
(because of aliasing). The default is to bring in both constant
and type equates and to make them debugger variables and
aliases. There are options to control what is done with the
equates.

14) Missing

The following commands are not yet implemented:

ACTIONS
CRASH
DISPLAY
LIST/CALLERS
LIST/STUBS
TRACE/UNINITIALIZED
UNDISPLAY

You cannot yet exit (using RETURN, YIELD, RETRY, ...) the scope
of an action or mutex seize.

Potrebbero piacerti anche