Debugger Interface

The interactive debugger interface within ssim is modeled after a subset of the GNU debugger gdb. Any command using line number or symbol value information will require that the source be assembled with sasm's -g flag. Debugging executables produced by other means may produce confusing results. (e.g., the ssim debugger expects only one source file). The debugger is activated by specifying the -g option to ssim. If the startup file ``ssim.ini" exists in the current directory, it will be opened and read for startup commands prior to user interaction.

The following commands are available within the debugger:

run [args] Execute the program with the specified arguments.
quit Exit ssim.
help Summarize the available commands.
break arg Set a breakpoint at the given argument. If the argument is an integer, it is assumed to be a line number. Breakpoints can also be set at virtual addresses (e.g., ``break *0x2cd0"). Up to 10 breakpoints may be set.
info Summarize current breakpoints.
cont Continue SPARC program execution.
display arg Display the symbol or register argument whenever control returns to the debugger. Up to 10 display elements may be set. There is no way to remove display elements in the current version.
print arg Print the value of a symbol or register argument.
verbose Toggle the verbose flag.
handle n arg Control signal handling for signal n. Options are [no]stop or [no]print.
disassemble [args] Disassemble code starting at the PC or specified argument(s).
delete [arg] Delete some or all breakpoints.
address arg Print the address of a symbol.
trace arg Turn on code/data tracing as with -c/-d on command line.
untrace [arg] Turn off code/data tracing.
list [args] List source code starting at the PC or specified line number(s).
next Step to the next line of code.

Only enough characters to uniquely specify a debugger command are necessary. Most of the commands are patterned after the GDB command interface. Debugger arguments must be separated by spaces. Any debugger input line with '#' in column 0 is ignored. The register names recognized by the debugger include:

  $g0,  $g1,  $g2,  $g3,  $g4,  $g5,  $g6,  $g7, 
  $o0,  $o1,  $o2,  $o3,  $o4,  $o5,  $sp,  $o7, 
  $l0,  $l1,  $l2,  $l3,  $l4,  $l5,  $l6,  $l7, 
  $i0,  $i1,  $i2,  $i3,  $i4,  $i5,  $fp,  $i7, 
  $f0,  $f1,  $f2,  $f3,  $f4,  $f5,  $f6,  $f7, 
  $f8,  $f9,  $f10, $f11, $f12, $f13, $f14, $f15, 
  $f16, $f17, $f18, $f19, $f20, $f21, $f22, $f23, 
  $f24, $f25, $f26, $f27, $f28, $f29, $f30, $f31, 
  $pc,  $npc, $y,   $fsr, $car, $zer, $ovf, $neg