383 lines
13 KiB
Plaintext
383 lines
13 KiB
Plaintext
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
=== The Sample Disk ===
|
|||
|
|
|||
|
The CodeView (R) sample disk is freely copyable as long as the
|
|||
|
programs and files on the disk are not modified. You may give
|
|||
|
the disk to friends, upload it to electronic bulletin boards, or
|
|||
|
distribute it through computer clubs. However, you may not sell
|
|||
|
the sample disk for profit. User groups may charge a fee to
|
|||
|
cover the actual cost of the disk and of administration.
|
|||
|
|
|||
|
The version of the CodeView debugger on this disk has been
|
|||
|
disabled so that it works only with the sample programs
|
|||
|
provided on the disk. To distinguish it from the commercial
|
|||
|
version, the restricted debugger file is called CVR.EXE rather
|
|||
|
than CV.EXE.
|
|||
|
|
|||
|
Do not alter the sample programs on the disk, since this will
|
|||
|
make the sample session nonoperational. However, the sample
|
|||
|
programs are in the public domain. You may modify and
|
|||
|
recompile the source code after copying the files to another
|
|||
|
disk. Do not distribute modified programs with the sample
|
|||
|
disk.
|
|||
|
|
|||
|
Copyright (C) Microsoft Corporation 1986
|
|||
|
All Rights Reserved
|
|||
|
|
|||
|
|
|||
|
|
|||
|
=== Starting the CodeView Debugger ==
|
|||
|
|
|||
|
The syntax for starting the restricted version of the debugger
|
|||
|
is shown below:
|
|||
|
|
|||
|
CVR [<options>] <executablefile> [<arguments>]
|
|||
|
|
|||
|
The CodeView start-up options are shown in the table below:
|
|||
|
|
|||
|
Option Effect
|
|||
|
------ ------
|
|||
|
/B Starts in black-and-white mode
|
|||
|
with color graphics adapter (CGA).
|
|||
|
|
|||
|
/C<commands> Executes commands on start-up.
|
|||
|
|
|||
|
/E Enables use of extended memory for
|
|||
|
CodeView symbol table.
|
|||
|
|
|||
|
/F Starts with screen flipping (exchanges
|
|||
|
screens by flipping video pages).
|
|||
|
|
|||
|
/M Disables the mouse.
|
|||
|
|
|||
|
/P Disables palette-register saving (necessary
|
|||
|
for compatibility with some EGAs).
|
|||
|
|
|||
|
/T Starts in sequential mode.
|
|||
|
|
|||
|
/S Starts with screen swapping (exchanges
|
|||
|
screens by swapping buffers).
|
|||
|
|
|||
|
/W Starts in window mode.
|
|||
|
|
|||
|
/43 Starts in 43-row mode with an
|
|||
|
enhanced graphics adapter (EGA).
|
|||
|
|
|||
|
/2 Allows two video adapters. You must have
|
|||
|
two video adapters and two monitors. The
|
|||
|
program display appears on the current default
|
|||
|
adapter and monitor, while the debugging
|
|||
|
display appears on the other adapter and
|
|||
|
monitor. For example, if you have both a color
|
|||
|
graphics adapter and a monochrome adapter, you
|
|||
|
might want to set the CGA up as the default
|
|||
|
adapter. You could then debug a graphics
|
|||
|
program with the graphics display appearing on
|
|||
|
the graphics monitor and the debugging display
|
|||
|
appearing on the monochrome adapter. Microsoft
|
|||
|
Mouse support will be disabled on the
|
|||
|
debugging display if you use this option.
|
|||
|
|
|||
|
|
|||
|
/D Turns off certain IBM-specific functions,
|
|||
|
including NMI trapping and 8259 masking. This
|
|||
|
option is required for IBM-compatible machines
|
|||
|
that do not support these functions, such as
|
|||
|
the IBM PC Convertible, the Tandy 1000, and
|
|||
|
the AT&T 6300 Plus. CONTROL-C and CONTROL-
|
|||
|
BREAK do not work if this option is used.
|
|||
|
Sequential mode is set automatically; use /W
|
|||
|
with /D to enable window mode.
|
|||
|
|
|||
|
/I Forces the debugger to handle certain IBM-
|
|||
|
specific functions, including NMI trapping and
|
|||
|
8259 masking. This option can be used to
|
|||
|
enable CONTROL-C and CONTROL-BREAK handling on
|
|||
|
computers that the debugger does not recognize
|
|||
|
as being IBM compatible, such as the Eagle PC.
|
|||
|
Window mode is set automatically; you do not
|
|||
|
have to specify /W.
|
|||
|
|
|||
|
If you have an IBM Personal Computer, the system always starts
|
|||
|
in window mode. Screen flipping is used if you have a graphics
|
|||
|
adapter and monitor. Screen swapping is used if you have a
|
|||
|
monochrome adapter and monitor.
|
|||
|
|
|||
|
If you have an IBM-compatible computer, you will usually want to
|
|||
|
specify the options that are used automatically with the IBM PC.
|
|||
|
|
|||
|
If your computer is not IBM compatible, you will not be able to
|
|||
|
use the CodeView debugger in window mode. You must specify /T to start
|
|||
|
in sequential mode. Sequential mode is not as convenient, but any
|
|||
|
debugging operation that can be done in window mode can also be done
|
|||
|
in sequential mode. You will not be able to use a mouse or menus in
|
|||
|
sequential mode, but you can use most function keys.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
=== CodeView Quick Start ===
|
|||
|
|
|||
|
If you are familiar with previous Microsoft (R) debuggers (SYMDEB
|
|||
|
or DEBUG), you will have little trouble using the CodeView debugger.
|
|||
|
|
|||
|
Once the CodeView display appears, you can start debugging. The primary
|
|||
|
CodeView debugging commands are the same or very similar to the ones
|
|||
|
used in SYMDEB and DEBUG. The most important commands common to both
|
|||
|
the CodeView debugger and SYMDEB are listed below (all but the last
|
|||
|
two are also available in DEBUG):
|
|||
|
|
|||
|
If You Want to: Do This:
|
|||
|
--------------- --------
|
|||
|
Quit the debugger Enter Q.
|
|||
|
|
|||
|
Execute code a step Enter T (for Trace) or P (for
|
|||
|
at a time Program Step).
|
|||
|
|
|||
|
Execute your program Enter G (for Go).
|
|||
|
|
|||
|
Set a breakpoint Enter BP (for Breakpoint Set)
|
|||
|
followed by an address. An easy
|
|||
|
way of specifying an address is
|
|||
|
to type a dot followed by the
|
|||
|
number of the source line where
|
|||
|
the breakpoint will be. For
|
|||
|
example, to set a breakpoint on
|
|||
|
line 25, enter
|
|||
|
|
|||
|
BP .25
|
|||
|
|
|||
|
Dump a portion of memory Enter D (for Dump) followed by the
|
|||
|
address where you want the dump to
|
|||
|
start. For example, enter
|
|||
|
|
|||
|
D DS:100
|
|||
|
|
|||
|
Examine a variable or Enter ? followed by the variable or
|
|||
|
expression expression. For example, to view
|
|||
|
the sum of sym1 and sym2 divided by
|
|||
|
the constant 3, enter
|
|||
|
|
|||
|
? (sym1+sym2)/3
|
|||
|
|
|||
|
View source code Enter V followed by a dot and the
|
|||
|
number of the first source line to be
|
|||
|
viewed. For example, to view source
|
|||
|
code starting at line 36, enter
|
|||
|
|
|||
|
V .36
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Two differences between the CodeView debugger and previous Microsoft
|
|||
|
debuggers may be confusing at first. The command for getting a summary
|
|||
|
help screen is H, not ? as in the earlier debuggers. Also, the
|
|||
|
CodeView debugger expects initial input in decimal, not in
|
|||
|
hexadecimal. You can enter hexadecimal numbers in the FORTRAN format (for
|
|||
|
example, #3CC2). You can also change the radix to hexadecimal or
|
|||
|
octal using the Radix command (for example, N16 for hexadecimal).
|
|||
|
|
|||
|
If you do not have an IBM or IBM-compatible computer, this may be all
|
|||
|
the information you need to start experimenting. If you have an IBM
|
|||
|
Personal Computer or a compatible computer capable of using CodeView's
|
|||
|
window mode, there are easier ways of doing many of the tasks shown
|
|||
|
above.
|
|||
|
|
|||
|
The table below concentrates on methods of executing commands from
|
|||
|
the keyboard, but the mouse versions of some commands are also
|
|||
|
mentioned:
|
|||
|
|
|||
|
If You Want to: Do This:
|
|||
|
--------------- --------
|
|||
|
View on-line help Press F1. The first menu screen
|
|||
|
appears. Use the mouse, menu selection
|
|||
|
letters, or the TAB and ENTER
|
|||
|
keys to move through the system.
|
|||
|
|
|||
|
Move through your First make sure the cursor is in the
|
|||
|
source code window containing source code. If
|
|||
|
it is not, press F6 to move the cursor
|
|||
|
to the correct window. Then press
|
|||
|
PGUP, PGDN, HOME, END, UP ARROW, or
|
|||
|
DOWN ARROW to move through the source
|
|||
|
code.
|
|||
|
|
|||
|
Execute code a step Press F8 (for Trace) or F10 (for
|
|||
|
at a time Program Step). If you have a mouse,
|
|||
|
you can click Trace on the menu bar.
|
|||
|
Use the right mouse button for the
|
|||
|
Trace command or the left mouse button
|
|||
|
for the Program Step command.
|
|||
|
|
|||
|
Execute your program Press F5 (for Go). Execution stops
|
|||
|
only if a breakpoint is encountered.
|
|||
|
If you have a mouse, you can click
|
|||
|
Go on the menu bar. Use either button.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Execute to a specified Move the cursor to the line to which
|
|||
|
line of code you want to execute (you may need to
|
|||
|
press F6 to switch the cursor to
|
|||
|
the correct window), then press
|
|||
|
F7. The reverse-video line marking
|
|||
|
the current location will move to
|
|||
|
that line. If you have a mouse,
|
|||
|
you can do the same thing by
|
|||
|
moving the mouse cursor and clicking
|
|||
|
the right button.
|
|||
|
|
|||
|
Set a breakpoint Move the cursor to the line where
|
|||
|
you want the breakpoint (you may
|
|||
|
need to press F6 to switch the
|
|||
|
cursor to the correct window),
|
|||
|
then press F9. The source line
|
|||
|
will be shown in high-intensity
|
|||
|
text to indicate that a breakpoint
|
|||
|
is set. You can repeat the same
|
|||
|
command to remove the breakpoint.
|
|||
|
If you have a mouse, you can do
|
|||
|
the same thing by moving the mouse
|
|||
|
cursor and clicking the left button.
|
|||
|
|
|||
|
You can also experiment with the menus listed on the top line of the
|
|||
|
display. To select from a menu with the keyboard, press the ALT key
|
|||
|
and the first letter of the menu title. A menu box listing the
|
|||
|
selections pops up. To make a selection, use the cursor keys to move
|
|||
|
the highlight to the selection you want, then press the ENTER key. You
|
|||
|
can also select from an open menu by pressing the highlighted "hot" key
|
|||
|
for the selection.
|
|||
|
|
|||
|
To select from a menu using the mouse, move the mouse cursor to the
|
|||
|
menu title, press either mouse button, and while holding the button
|
|||
|
down, drag the highlight down to the desired selection. Then release
|
|||
|
the button.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
=== Command Summary ===
|
|||
|
|
|||
|
|
|||
|
The following table shows the window commands that can be
|
|||
|
executed with the mouse or function keys:
|
|||
|
|
|||
|
Command Keyboard Mouse
|
|||
|
---------------------------- ----------------------- ---------------------------
|
|||
|
Open help screen | F1 | Use Help menu
|
|||
|
Open register window | F2 | Use View menu
|
|||
|
Toggle source/assembly/mix | F3 | Use View menu
|
|||
|
Switch to output screen | F4 | Use View menu
|
|||
|
Go | F5 | Click on Go
|
|||
|
Switch cursor window | F6 | None
|
|||
|
Go to cursor line | F7 at location | Click right on source line
|
|||
|
Trace through functions | F8 | Click left on Trace
|
|||
|
Set breakpoint at cursor | F9 at location | Click left on source line
|
|||
|
Step over functions | F10 | Click right on Trace
|
|||
|
Change flag | None | Click on flag
|
|||
|
Make window grow | CONTROL-G | Drag bar up or down
|
|||
|
Make window smaller (tiny) | CONTROL-T | Drag bar up or down
|
|||
|
Scroll up line in window | Move cursor off top | Click left on up arrow
|
|||
|
Scroll up page in window | PGUP | Click above elevator
|
|||
|
Scroll to top of window | HOME | Move elevator to top
|
|||
|
Scroll down line in window | Move cursor off bottom| Click left on down arrow
|
|||
|
Scroll down page in window | PGDN | Click below elevator
|
|||
|
Scroll to bottom of window | END | Move elevator to bottom
|
|||
|
Move cursor | UP ARROW or DOWN ARROW| None
|
|||
|
---------------------------- ----------------------- ---------------------------
|
|||
|
|
|||
|
|
|||
|
|
|||
|
The syntax for each of the CodeView dialog commands is listed below.
|
|||
|
The commands are listed in groups according to their functions:
|
|||
|
|
|||
|
Execute Code
|
|||
|
|
|||
|
Command Syntax
|
|||
|
------- ------
|
|||
|
Trace T [<count>]
|
|||
|
Program Step P [<count>]
|
|||
|
Go G [<address>]
|
|||
|
Execute E
|
|||
|
Restart L [<arguments>]
|
|||
|
|
|||
|
Examine Data
|
|||
|
|
|||
|
Command Syntax
|
|||
|
------- ------
|
|||
|
Display Expression ? <expression>[,format]
|
|||
|
Examine Symbols X?[mod!][fun.][sym][*]
|
|||
|
Dump D[<type>] [<range>]
|
|||
|
Register R [<reg>] [[=]<expression>]
|
|||
|
8087 Dump 7
|
|||
|
Port Input I <port>
|
|||
|
Search Memory S <range> <list>
|
|||
|
Compare Memory C <range> <address>
|
|||
|
|
|||
|
Breakpoints
|
|||
|
|
|||
|
Command Syntax
|
|||
|
------- ------
|
|||
|
Breakpoint Set BP [<address>] [<count>] ["<command>"]
|
|||
|
Breakpoint Clear BC [<list>]
|
|||
|
Breakpoint Disable BD [<list>]
|
|||
|
Breakpoint Enable BE [<list>]
|
|||
|
Breakpoint List BL
|
|||
|
|
|||
|
Watch Statements
|
|||
|
|
|||
|
Command Syntax
|
|||
|
------- ------
|
|||
|
Watch W? <expression>
|
|||
|
Watch W[<type>] <range>
|
|||
|
Watchpoint WP? <expression>
|
|||
|
Tracepoint TP? <expression>
|
|||
|
Tracepoint TP[<type> <range>
|
|||
|
Delete Watch Y<list>
|
|||
|
|
|||
|
Examine Source
|
|||
|
|
|||
|
Command Syntax
|
|||
|
------- ------
|
|||
|
Set Mode S[+|-|&]
|
|||
|
Unassemble U [<range>]
|
|||
|
View Source V [<address>]
|
|||
|
Current Location .
|
|||
|
Stack Trace K
|
|||
|
|
|||
|
Modify
|
|||
|
|
|||
|
Command Syntax
|
|||
|
------- ------
|
|||
|
Assemble A [<address>]
|
|||
|
Enter E[<type>] [<list>]
|
|||
|
Port Output O <port> <byte>
|
|||
|
Fill Memory F <range> <list>
|
|||
|
Move Memory M <range> <address>
|
|||
|
|
|||
|
System Control
|
|||
|
|
|||
|
Command Syntax
|
|||
|
------- ------
|
|||
|
Set Radix N[<radix>]
|
|||
|
Quit Q
|
|||
|
Search /[<regex>]
|
|||
|
Screen Exchange \
|
|||
|
Tab Set #[<num>
|
|||
|
Option O[F|B|C|3 [+|-] ]
|
|||
|
|
|||
|
Redirection
|
|||
|
|
|||
|
Command Syntax
|
|||
|
------- ------
|
|||
|
Send Output [T]>[>]<device>
|
|||
|
Get Input <<device>
|
|||
|
Redirect Both =<device>
|
|||
|
Pause "
|
|||
|
Delay :
|
|||
|
Comment *[<comment>]
|
|||
|
|