|
|
BSD 4.3reno
.TH DDT68 1 MC68000 .SU .SH NAME ddt68, fddt68 \- symbolic debugger for 68000 .SH SYNOPSIS .B fddt68 b.out .br .B cc68 ... -lddt (Sun) .SH DESCRIPTION .I fddt68 is a symbolic disassembler for b.out files created by the 68000 linker (ld68). Its main purpose is to allow testing of ddt logic in a more hospitable environment than the 68000. It also gives a way of inspecting the assembly language form of a program without having to produce a .s file. In addition it gives a check on the operation of as68 and ld68. It is called by typing: .sp fddt68 .I filename .sp on the Vax. .PP .I ddt68 is a symbolic debugger for the 68000. It is loaded at link edit time with the cc68 flag -lddt. On starting a program with ddt loaded the user will be at the ddt command level. Breakpoints may be set, and the program started, using the commands described below. .SH COMMANDS .I ddt68 recognizes the following commands (\fI$\fP is used for \fI<esc>\fP): .TP .IB expression / .TP .IB expression \e open the location at \fIexpression\fP and display the contents in the current typeout mode. The user may then optionally type an expression, whose value replaces the contents of the open location. Finally the location is \fIclosed\fP by typing one of \fIreturn\fP (to return to \fIddt\fP's main command loop), \fI/\fP (to open the next location), or \fI\\\fP (to open the previous location). .TP .IB expression $g go - plant any breakpoints set with the \fI$b\fP command, load the registers, and start execution at \fIexpression\fP. If \fIexpression\fP is unspecified or zero, execution resumes starting from the current value of \fI$pc\fP (normally the point where the program was last interrupted). .TP .IB expression $x execute the next \fIexpression\fP instructions, starting from the current value of \fI$pc\fP and printing out all executed instructions. If \fIexpression\fP is omitted, 1 is assumed. .TP .IB expression $$x same as above except execute subroutine calls and traps as single instructions, i.e. do not descend into the called subroutine. .TP .IB expression $p proceed - like \fIgo\fP with no argument, except that if we are presently at a breakpoint then \fIexpression\fP counts the number of times to pass this breakpoint before breaking. \fI1$p\fP is synonymous with \fI$g\fP. .TP .IB expression $ bno b set breakpoint \fIbno\fP (in the range 1-9) at \fIexpression\fP. If \fIbno\fP is omitted the first unused breakpoint number is assigned (the commonest usage). If \fIexpression\fP is 0 the named breakpoint is cleared, or if there is no named breakpoint (\fIbno\fP is omitted) all breakpoints are cleared. If \fIexpression\fP is omitted all breakpoints are printed, whether or not \fIbno\fP is present. .TP .BI $ rspec / .TP .BI $ rspec \e examine register \fIrspec\fP where \fIrspec\fP is one of: .RS .TP .B d0-d7 data registers 0-7 .TP .B a0-a7 address registers 0-7 .TP .B fp frame pointer (synonym for \fIa6\fP) .TP .B sp stack pointer (synonym for \fIa7\fP) .TP .B pc program counter .TP .B sr status register .RE .TP .IB expression $= type out \fIexpression\fP in current output radix. .TP .IB lowlimit < highlimit > pattern ? search for \fIpattern\fP in the range \fIlowlimit\fP (inclusive) to \fIhighlimit\fP (exclusive). The pattern is interpreted as an object of the type in force as the current typeout mode, with instructions and strings being treated as 2-byte words. Objects are assumed to be aligned on word (2-byte) boundaries except for 1-byte types and strings which are aligned on byte boundaries. A mask (set with the following command) determines how much of the pattern is significant in the search, except that if the pattern is a string constant a separate mask matched to the length of the string is used. The three arguments to the search command are sticky; thus if \fIlowlimit<\fP (resp. \fIhighlimit\fP>) is omitted, the most recent lowlimit (resp. highlimit) applies. While \fIpattern\fP may be omitted, the final ? may not be omitted. .TP .IB expression $m set the search mask to \fIexpression\fP. \fI-1$m\fP forces a complete match, \fIf$m\fP checks only the low order 4 bits, \fI0$m\fP will make the search pattern match anything. .TP .IB base $ir set input radix to \fIbase\fP. (Note \fI10$i\fP can never change the radix.) If \fIbase\fP is omitted hexadecimal is assumed. .TP .IB base $or set output radix to \fIbase\fP. If \fIbase\fP is omitted hexadecimal is assumed. .TP .BI $ type t temporarily set typeout mode to \fItype\fP where \fItype\fP is one of: .RS .TP .B <space> deduce type from type of nearest symbol .TP .B c type out bytes as ascii characters. .TP .B h type out bytes in current output radix. .TP .B w type out words in current radix. .TP .B l type out longs in current radix. .TP .B s type out strings in current radix. (In this mode new values cannot be entered.) .TP .B i type out as 68000 symbolic instructions. (In this mode only the first two bytes of the opened location may be changed; the new value is typed in as a numeric expression rather than as a symbolic instruction.) .RE The new typeout mode stays in effect until a \fIreturn\fP is typed. .TP .BI $$ type t permanently set typeout mode to \fItype\fP. .PP An \fIexpression\fP is composed of symbols, numeric constants, string constants, and the operators \fI+\fP, \fI-\fP, and \fI|\fP representing 2's complement addition, subtraction, and inclusive bitwise or. Symbols are delimited by operators or \fI<esc>\fP. A string constant has from 1 to 4 characters which are packed right justified into one long to form a numeric constant; thus "did"=646A64. String constants are particularly useful in conjunction witht the search command for searching for a string. The single character \fI.\fP (dot) as a symbol on its own represents the address of the currently open memory location. All operations are carried out using 32 bit arithmetic and evaluated strictly left to right. .SH AUTHORS Jim Lawson and Vaughan Pratt
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.