发信人: Zhang_Hong@bbs.ustc.edu.cn (不是洪哥), 信区: cnhacker
标  题: SoftIce Chap 07
发信站: PBBS EMail Gateway (Sat Apr 25 23:48:24 1998)
转信站: Lilac!ustcnews!ustcbbs


CHAPTER 7 - Symbolic and Source Level Debugging

     07.01 Introduction
     07.02 Preparing for Symbolic or Source Debugging
     07.02.01 Preparing for Symbolic Debugging Only
     07.02.02 Preparing for Symbolic and Source Level Debugging
     07.03 Reserving Memory for Symbols and Source Files
     07.04 Loading Programs and Symbol Files
     07.04.01 Loading Program, Symbols and Source
     07.04.02 Loading Only Symbols and Source Files
     07.04.03 Loading a Program With No Symbols or Source
     07.05 Debugging With Symbols
     07.06 Debugging With Source
     07.06.01 Using Line Numbers
     07.06.02 Using Source Mode in the Code Window

07.01 Introduction

     Soft-ICE can load programs, symbol tables and source files for
     enhanced debugging. Symbolic debugging allows you to set break points
     and reference variables with symbol names rather than specifying
     numeric addresses. Source level debugging allows you to step through
     your program at the source code level rather than assembly code level.

     Symbol and source line number information is extracted from the link
     map file. The link map must be compatible with Microsoft's linker
     version 3.60 or greater.

     Symbols and source files reside in extended memory. You must have
     sufficient extended memory for the symbols and source files. Source
     files are not paged from the disk as in many debuggers. This allows
     Soft-ICE to provide complete system debugging in source level, You can
     debug T&SR's interrupt routines and other systems level code at the
     source level.

     Note : You cannot use symbolic or source level debugging unless
     Soft-ICE has been loaded as a device driver in CONFIG.SYS.

07.02 Preparing for Symbolic or Source Debugging

     Before debugging a program with symbols or source you must create a
     symbol file. This is a binary file that contains symbol and line
     number information in a format that Soft-ICE can understand. This file
     is created with the utility MSYM.EXE. MSYM.EXE reads in your link map
     to create a symbol file with the extension (.SYM).

07.02.01 Preparing for Symbolic Debugging Only

     To prepare a program for symbolic debugging only, you must do the
     following steps:

     1. Compile or assemble your program.

     2. Link your program with the proper switches to create a .MAP file
     that contains a list of public symbols. If you are using Microsoft's
     linker, the /MA switch is the proper switch to use. This .MAP file
     must be identical to the .MAP file produced by Microsoft's linker,
     version 3.60 or greater.

     3. Create a.SYM file by running MSYM.EXE. The syntax for using
     MSYM.EXE is:

     MSYM program-name [.extension]

     If the extension is not supplied MSYM assumes the extension is .MAP.
     MSYM reads in a map file as in and writes out a symbol file as output.
     The symbol has the name program-name.SYM.

     Note : Before compiling or assembling your program you may want to
     make some additional symbols public. Only public symbols are supported
     with Soft-ICE symbolic debugging. The way to make a variable or a
     label public varies, depending upon which language you are using.

     In 8086 assembly language, simply use the PUBLIC directive followed by
     the locally defined symbols you wish to make public. For example:

     PUBLIC FOO, LOOP1, STATUS

     In C language, all procedure names and static variables are defined
     outside a block are public.

     For other languages, refer to your language manual for details.

07.02.02 Preparing for Symbolic and Source Level Debugging

     To prepare a program for both symbolic and source debugging, you must
     do the following steps:

     1. Compile or assemble each module that you wish debug at the source
     level with the appropriate switch to put line number information into
     the object files. With Microsoft languages you can use either the /Zi
     or the /Zd switches. You may not want to do this with all files,
     because the combined file sizes of the symbol file and all the source
     files compiled with these switches must fit into the amount of
     extended memory you have reserved with the /SYM loading switch in
     CONFIG.SYS.

     2. Link your program with the proper switches to create a .MAP file
     that contains source line numbers and a list of public symbols. If you
     are using Microsoft's linker, the /LI and /MA switches are the proper
     switches to use. This .MAP file must be identical to the.MAP file
     produced by Microsoft's linker, version 3.60 or greater.

     3. Create a.SYM file by running MSYM.EXE. The syntax for using
     MSYM.EXE is :

     MSYM program-name [.extension]

     If the extension is not supplied MSYM assumes the extension is.MAP.
     MSYM reads in a map file as input and writes out a symbol file as
     output. The symbol file has the name program-name.SYM.

07.03 Reserving Memory for Symbols and Source Files

     Before loading programs, symbol files and source files you must
     reserve extended memory for them. Extended memory is reserved when you
     load Soft- ICE in CONFIG.SYS. Before reserving extended memory you may
     want to add up the file sizes of the .SYM file and all of the source
     files that you want to load. You must reserve at least this much
     extended memory. You must use the

     /SYM loading switch when loading S-ICE.EXE. A sample line in
     CONFIG.SYS for loading Soft-ICE and reserving space for symbols and
     source files is:

     DEVICE = S-ICE.EXE /SYM 1024

     This example loads Soft-ICE into extended memory and reserves 1
     megabyte of memory for symbols and source files. See section 6.3
     (Loading Soft-ICE as a Loadable Device Driver) for more details on
     reserving memory.

07.04 Loading Programs and Symbol Files

     The Soft-ICE utility LDR.EXE is used for loading programs, symbol
     files and source files. For symbolically debugging application
     programs and T&SR programs you will typically use LDR.EXE to load the
     program, symbols and source files in one step. For debugging loadable
     device drivers, ROMs and other system components you will typically
     use LDR.EXE to load the symbol file and source files only. The syntax
     for LDR.EXE is :

     LDR program-name | program-name.SYM | program-name.extension

07.04.01 Loading Program, Symbols and Source

     To load your program, symbols and source files in one step, you must
     use LDR.EXE in the form:

     LDR program-name

     Notice that program-name does not have a file extension. If no file
     extension is supplied, then LDR.EXE will do the following:

     1. Load program-name.SYM into extended memory

     2. Load source files into extended memory. This step is done only if
     source records exist in the .SYM file.

     3. Load program-name.EXE into memory at the location it would have
     loaded if it had been loaded directly from the DOS prompt.

     4. Bring up Soft-ICE with the instruction pointer at first instruction
     of your program. If it is a C program and source is loaded for the
     file containing , _MAIN, then the source for that file will be visible
     in the code window.

07.04.02 Loading Only Symbols and Source Files

     If you wish to load only symbols and source files (for debugging a
     loadable device driver for example) you must use LDR.EXE in the form:

     LDR program-name.SYM

     Notice that the.SYM extension is specified. This will load the .SYM
     file and source files into extended memory. When symbols are loaded by
     this method your program or device driver symbols are assumed to be
     referenced from 0:0. Since this is rarely the case you will need to
     use the Soft-ICE command SYMLOC to locate the symbols. See the
     description of the SYMLOC command in section 5.10 for a complete
     description. An example of loading a symbol file called DRIVER.SYM is:

     LDR DRIVER.SYM

07.04.03 Loading a Program With No Symbols or Source

     To load a program file without loading the associated symbol file you
     must use LDR.EXE in the form:

     LDR program-name.extension

     Notice that the file extension is present. Typically the file
     extension will be.EXE or.COM. When a file extension specified LDR.EXE
     will load the program and bring up Soft-ICE with the instruction
     pointer at the first instruction of the program. An example of loading
     a program with symbols and source is:

     LDR TEST.EXE

     Notes : LDR.EXE saves a copy of the interrupt vector table
     automatically when it loads your program. This is equivalent to doing
     a VECS S command. If you are going to exit your program before it runs
     to completion, you can do an EXIT R to exit the program and restore
     the interrupt vector table.

     Using LDR.EXE to load only the program-name.EXE is often useful for
     restarting your program while in the middle of a source level
     debugging session. To restart, the EXIT R command to abort the current
     session. Then use LDR.EXE to reload your.EXE file. The symbols: source
     do not have to be loaded since they remain in extended memory.

     If LDR.EXE gives you the message "Out of space loading symbol
     information", this means that you did not reserve enough extended
     memory with the /SYM loading switch in CONFIG.SYS.

     If LDR.EXE does not find your source files on the same directory as
     the program you are loading, LDR.EXE will prompt you for the path
     names where it can find the source files. If you have source files on
     several directories or are loading a program frequently this becomes
     cumbersome. You can eliminate the need for prompting by using the DOS
     environment variable SRC. LDR.EXE uses this environment variable to
     find source files before prompting the user. The syntax for setting
     the environment variable from the DOS prompt is:

     SET SRC = directory;directory;...;directory

     Each of the specified directories will be searched before the user is
     prompted.

     Limitations : Soft-ICE supports symbols for only one program at a
     time. If you load a new .SYM file, the existing one is overwritten.
     Soft-ICE does not follow overlays or Microsoft Windows segment
     movement. Soft-ICE recognizes public symbols and line numbers only. It
     does not support local variables.

07.05 Debugging With Symbols

     After you have loaded your program and.SYM file you can begin
     debugging your program symbolically. In general a symbol can be used
     in any command in place of an address.

     Symbols are also used by several Soft-ICE commands when addresses are
     displayed. For example, the U command displays symbol names of labels
     and procedures as it encounters them. There are two commands that are
     helpful when you are symbolically debugging:

     SYM: Use the SYM command to get a listing of symbol names and values,
     or to change the value a symbol.

     SYMLOC: Use the SYMLOC command to relocate the base of all of your
     symbols. You would need to use the SYMLOC command when:

     1. Loading symbols for a loadable device driver

     2. Loading symbols for a T&SR that has already been loaded

     3. Your program moves itself to a location other than it original
     location.

     See section 5. 10 for a complete description of these commands.

07.06 Debugging With Source

     When source files are loaded, Soft-ICE allows you to view and step
     through your source code as you are debugging. Soft-ICE offers two
     different modes of source level debugging: mixed mode and source mode.
     Use the SRC command to switch between modes.

     Mixed mode shows source lines and the assembly language produced by
     those source lines intermixed on the display. Mixed mode is useful
     when you must debug at the assembly level, but use the source lines
     for reference. Mixed mode is allowed whether the code window visible
     or not.

     Source mode strictly shows source lines on the display. Source level
     debugging requires the code window to be visible.

07.06.01 Using Line Numbers

     Line numbers can be used in place of addresses in several commands. To
     differentiate a line number from an actual address, place a . (period)
     in front of the number. For example, to set an execution break point
     at source line 45 type:

     BPX .450

07.06.02 Using Source Mode in the Code Window

     The code window must be visible to enter source mode. If not visible,
     use the WC command to make it visible. Once you are in source mode you
     can use Soft-ICE commands switch to a different source file, view
     source at any location in the file, scroll through the file, search
     for strings in the file, and set break points in the file. For a
     complete description of the following commands see their command
     descriptions in chapters 4 and 5. The following list is a brief
     overview of commands that are useful when debugging source code:

     Make the code window visible (if it is not already) with WC command.

     Toggle between source, mixed, and code modes with the SRC command.

     Place a source file in the code window with the FILE command. For
     example change from the current file to file MAIN.C enter:

     FILE MAIN.C

     Display source at a specific location within the source file with the
     U command. To change the view to a specific line number or memory
     address use the U command. You can specify actual addresses or line
     numbers as a parameter to the command. For example, to view source in
     the code window starting at source line 450 enter:

     U .450

     Locate the current instruction in the code window with the . (period)
     command.

     Search for a specific character string with the S command. For
     example, to search for the string "Hello World" starting at line 100
     in the current source file enter:

     SS 100 "Hello World"

     Move the cursor to the code window (if it is not) with the EC command.

     Scroll the source with the keys up, down, PaqeUp, PageDn.

     Set point-and-shoot break points with the BPX command. Simply place
     the cursor on the source line that you wish to break on, then enter:

     BPX



--
※ 来源: 中国科大BBS站邮件网关
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:211.620毫秒