      SOFT-ICE/W OPERATING PROBLEMS FILE

      List of subjects:	
      1. HANGS AT 2ND LOGO OR WHEN STEPPING
      2. WINICE	SCREEN DOESN'T DISPLAY WHEN QEMM OR 386MAX IS INSTALLED
      3. VIDEO DISPLAY IS MESSED UP WHEN ENTERING OR EXITING SOFT-ICE/W
      4. ACTION	CVW GIVES SYNTAX ERROR OR DOES NOT WORK
      5. INT1/3	DOESN'T BREAK ON WINDOWS DRIVERS
      6. USING SYMLOC
      7. BPINT DOES NOT	WORK
      8. INVALID INTERRUPT # ON	BPINT
      9. BPX DOESN'T WORK ON INT 20H IN VxD
      10. LOGGING CODE/DATA
      11. "PRESS Z TO RETURN TO SOFT-ICE"
      12. DATA WINDOW ALL "?"s
      13. EXITS	ON XRSET
      14. DISPLAYING "REALS" IN	PASCAL PROGRAMS
      15. DEBUGGING MULTIPLE PROGRAMS
      16. USING	WLDR ICON WITH DEBUG DATA IN .SYM FILE
      17. LOADING ONLY SELECTED	SOURCE FILES
      18. SOURCE DISPLAY IN ONLY ONE MODULE OF MULTI-MODULE PROGRAM
      19. RUNNING WITH WINDOWS INSTALLED ON A NETWORK
      20. GENERAL PROTECTION FAULT IN DISPLAY (01)
      21. DISPLAYING STRUCTURES	IN SIW
      22. "FILE NAME IS NOT VALID" ERROR
      23. GPF IN WLDR -	BORLAND	PROGRAMS
      24. VIDMODE DOESN'T WORK (VERSION 1.2 ON)
      25. USING	WLOG WITH MS-DOS 6.0
      26. CANNOT SYNCHRONIZE REMOTE DEBUGGING
      27. LOADING GDI, KERNEL &	USER WHEN USING	MSC8.00	COMPILER

      -------------------------------------------------------------------
      1. HANGS AT 2ND LOGO OR WHEN STEPPING
      -------------------------------------------------------------------
	 Problem: When WINICE is loaded, it hangs at the 2nd WINDOWS logo
      on a 486 system. If any keyboard LED (such as CAPSLOCK) is set on	
      before WINICE is loaded, it is off when the system hangs.	Also can
      happen when single stepping with F8 key.
	 Solution: Add the command "NOLEDS" on a separate line in 
      WINICE.DAT. This fixes a problem caused an interrupt from	the 
      keyboard LED's.

      -------------------------------------------------------------------
      2. WINICE	SCREEN DOESN'T DISPLAY WHEN QEMM OR 386MAX IS INSTALLED
      -------------------------------------------------------------------
	 Problem: As described above.
	 Solution: Both	these memory managers have a "stealth" mode which
      makes it impossible to find the video pointers. With QEMM, stealth 
      mode is enabled by the "/ST" switch. With	386MAX,	stealth	mode is	
      set by a line in the file	386MAX.PRO which begins	with "VGASWAP".	
      You must disable stealth mode to use Soft-ICE/W.

      -------------------------------------------------------------------
      3. VIDEO DISPLAY IS MESSED UP WHEN ENTERING OR EXITING SOFT-ICE/W
      -------------------------------------------------------------------
	 Problem: As described above.
	 Solution: This	may be because Soft-ICE	does not support your 
      video card.  In version 1.3 we added support for the ATI Ultra, ATI
      Ultra Pro, and the Orchid	Fahrenheit 1280.  If you have a	different
      video card, then your only choices are to	use a second monitor, use
      serial debugging or to run Windows in standard VGA mode.	See the	
      README.1st file on your installation disk	for more information.

      -------------------------------------------------------------------
      4. ACTION	CVW GIVES SYNTAX ERROR OR DOES NOT WORK
      -------------------------------------------------------------------
	 Problem: ACTION CVW gives syntax error.
	 Solution: When	ACTION is used with a debugger verb, it	searches 
      the list of active Windows modules for that name.	Therefore it can 
      be used only when	that module is active, which means that	the 
      debugger must be called up before	the associated verb can	be used.

      NOTE: ACTION with	a debugger name	will not work for a BPX	style
      (software) breakpoint, only with hardware	breakpoints. Use a BPM 
      type breakpoint with the X verb for an execution breakpoint.

      -------------------------------------------------------------------
      5. INT1/3	DOESN'T BREAK ON WINDOWS DRIVERS
      -------------------------------------------------------------------
	 Problem: INT1 or INT3 doesn't break when debugging Windows 
      drivers.
	 Solution: Some	users interpret	the manual to mean that	
      "I1HERE ON" or "I3HERE ON" should	be on a	separate line in the 
       WINICE.DAT file.	This is	wrong: the command should be part of the 
       INIT string, for	example:

	   INIT	= "I3HERE ON;X;"

      Note: The	"X" command should always be the last command in the INIT
	   string; put any other commands before it.

      -------------------------------------------------------------------
      6. USING SYMLOC
      -------------------------------------------------------------------
	 Problem: How to use SYMLOC on a Windows program whose location	
      is not known.
	 Solution: Put an INT3 in the source code, preferably in the 
      first module. If it cannot be put	into the first module, then you	
      must make	a .MAP file and	find the (relative) segment address of 
      the module containing the	INT3.
	 Load the symbols using	WLDR or	LOAD, then run the program. When
      the INT3 pops up Soft-ICE/W, do a	"SYMLOC CS" if the INT3	is in the
      first module, or a "SYMLOC CS+XXX", where	XXX is the segment of the
      actual module in the .MAP	file.

      -------------------------------------------------------------------
      7. BPINT DOES NOT	WORK
      -------------------------------------------------------------------
	 Problem: Setting a BPINT at a high vector does	not work.
	 Solution: WINDOWS does	not virtualize all the interrupt vectors.
      It may be	necessary to read the real mode	interrupt vector and set 
      a	BPX at the start of the	real mode interrupt routine. When setting
      this BPX,	be sure	to specify "segment" (the "&" operator)	rather 
      than selector (the "#" operator),	since this will	be a real mode
      address. See the Manual for an explanation of these operators.

      -------------------------------------------------------------------
      8. INVALID INTERRUPT # ON	BPINT
      -------------------------------------------------------------------
	 Problem: When BPINT is	keyed with an interrupt-number greater 
      than 5FH,	the error message "invalid interrupt number" is	
      displayed.
	 Solution: The WINDOWS IDT only	handles	interrupts 00 to 5F; 
      interrupts above this are	dispatched through general protection 
      faults. To set a breakpoint on a higher interrupt, get the real 
      mode interrupt vector, and set a BPX on the first	instruction in 
      the real mode interrupt service routine.

      -------------------------------------------------------------------
      9. BPX DOESN'T WORK ON INT 20H IN VxD
      -------------------------------------------------------------------
	 Problem: BPX (INT3) doesn't work when set at an INT 20H call in 
      a	VxD.
	 Analysis: The VxD handler for INT 20H replaces	it with	a CALL;	
      this overwrites the BPX, and so it is lost. There	is no way around 
      this.

      -------------------------------------------------------------------
      10. LOGGING CODE/DATA
      -------------------------------------------------------------------
	 Problem: How to log code or data to a file.
	 Method: To log	code, key "WC" to remove the Code Window, then 
      key a "U"	command	to display the desired code: it	will be	in the 
      Command Window where it can be logged with WLOG.EXE. To log data,	
      key "WD" to remove the Data Window and key a command to display the
      desired data.
	 You may want to increase the size of the command window to 
      display as much data or code as possible.	You may	also want to 
      increase the size	of the HST buffer where	the command window 
      history is stored.

      -------------------------------------------------------------------
      11. "PRESS Z TO RETURN TO SOFT-ICE"
      -------------------------------------------------------------------
	 Problem: The message "Press Z to return to Soft-ICE" is 
      displayed.
	 Solution: This	message	indicates a "rip", which is a fatal error
      in the Windows kernel. When it occurs, it	may also display some 
      other key	choices. The only thing	that can be done is to gather as 
      much data	as possible about the rip, either through Soft-ICE or one
      of the other key choices to help identify	where it happened.

      -------------------------------------------------------------------
      12. DATA WINDOW ALL "?"s
      -------------------------------------------------------------------
	 Problem: DATA window is all filled with "?"s.
	 Solution: Windows pages memory	to disk	if it does not have 
      enough physical memory. If the addresses in the DATA window are 
      owned by a DOS VM, and are not currently paged in, it will be 
      displayed	as all question	marks since Soft-ICE/W cannot read it.

      -------------------------------------------------------------------
      13. EXITS	ON XRSET
      -------------------------------------------------------------------
	 Problem: Exits	WINICE when trying to clear back trace buffer.
	 Solution: If "XRESET" is keyed	instead	of "XRSET", it is taken	
      as an "X"	command, and WINICE is exited.

      -------------------------------------------------------------------
      14. DISPLAYING "REALS" IN	PASCAL PROGRAMS
      -------------------------------------------------------------------
	 Problem: Variables classified as "reals" cannot be displayed.
	 Solution: Reals have a	6-byte format which is not a standard 
      80x87 format, so they cannot be displayed. Change	the "real" to 
      "single" or "double"; it may be necessary	to add "/$E+/$F+" to the 
      compile switches as well.	This will use standard formats for the 
      variables	so they	can be displayed correctly.

      -------------------------------------------------------------------
      15. DEBUGGING MULTIPLE PROGRAMS
      -------------------------------------------------------------------
	 Problem: How to debug multiple	programs that interact:	for 
      example, a DOS T&SR, a Windows Application, and a	DLL.
	 Solution: Use multiple	LOAD statements	in WINICE.DAT to load all
      the debug	data. The current Table	will be	the last one loaded. Use 
      the "TABLE" command to switch to a different table for setting 
      breakpoints. The "TABLE $" command will select the Table corres-
      ponding to the current CS:IP; the	"TABLE AUTOON" command will make 
      this switch to the current CS:IP automatically.

      -------------------------------------------------------------------
      16. USING	WLDR ICON WITH DEBUG DATA IN .SYM FILE
      -------------------------------------------------------------------
	 Problem: When iconized	WLDR is	used to	load a file whose debug	
      data is in a .SYM	file rather than in the	executable, the	debug 
      data does	not get	loaded.
	 Solution: Use a LOAD statement	in WINICE.DAT or a "/load" switch
      on the WINICE command line to load the debug data. After Windows 
      has finished loading, use	the hot	key to pop up Winice, and set a	
      BPX on a symbolic	name in	the program, preferably	at the entry 
      point. Then load the program from	Windows	rather than using WLDR.

      -------------------------------------------------------------------
      17. LOADING ONLY SELECTED	SOURCE FILES
      -------------------------------------------------------------------
	 Problem: Not enough memory to be able to load all the source 
      files for	a program.
	 Solution: If there is a file with the same name as the	execut-
      able and with the	extension .SRC,	only those source files	listed in
      this file	will be	loaded.	The file names must be listed without any
      drive or directory. 
	If there is no .SRC file, all the source files will be loaded.

      -------------------------------------------------------------------
      18. SOURCE DISPLAY IN ONLY ONE MODULE OF MULTI-MODULE PROGRAM
      -------------------------------------------------------------------
	 Problem: C7 source debugging is working in only one module of 
      the program, not in other	modules. This problem occurs in	MEDIUM 
      and LARGE	model, but not SMALL or	COMPACT	model.
       
	 Solution: Put a SEGMENT section in the	.DEF file. Get the code	
      segment names from the .MAP file.	 Suppose there are 4 code 
      segments which are named _TEXT, _MOD1, _MOD2 and	_MOD3. Add the 
      following	section	anywhere in the	.DEF file:
       
       SEGMENTS
	      TEXT
	      MOD1
	      MOD2
	      MOD3
       
	 Note that the segment names other than	TEXT are the names of the
      source modules. This work-around is actually the preferred method	
      for building a Windows program.  It makes	a code segment for each	
      module, so when Windows discards segments	and brings them	back in,
      it is more efficient.

      -------------------------------------------------------------------
      19. RUNNING WITH WINDOWS INSTALLED ON A NETWORK
      -------------------------------------------------------------------
	 Problem: If Windows is	installed on a network,	usually	
      Soft-ICE/W will not be able to find GDI.EXE, USER.EXE, WIN386.EXE	
      and KRNL386.EXE. Soft-ICE/W may not work properly	if it does not 
      find these files.
	 Solution:  Make a /SYSTEM directory in	whatever node WIN.COM is 
      located in on the	network. Copy the above	.EXE files to this 
      directory.

      -------------------------------------------------------------------
      20. GENERAL PROTECTION FAULT IN DISPLAY (01)
      -------------------------------------------------------------------
	 Problem: When running SIW, you	get a GPF in DISPLAY (01)
	 Solution: This	normally occurs	with people who	are running an
      ATI Video	Card.  This is a bug in	the ATI	driver.	 There are two
      cases where this can happen:
	 1 - When running the DEBUG version of Windows.	 The ATI driver	
      RIPs when	exiting	Windows, thus causing the GPF.	The only solution
      is not to	use the	DEBUG version.
	 2 - When running a BORLAND OWL	program.  When exiting Windows,
      the ATI driver frees its selector	before the WEP routines	of the 
      BORLAND OWL have a chance	to free	their GDI resources.  OWL tries
      to use the selector that the ATI driver freed, thus causing a GPF.
       
      -------------------------------------------------------------------
      21. DISPLAYING STRUCTURES	IN SIW
      -------------------------------------------------------------------
	 Problem: You are unable to dump members of a structure
	 Solution: SIW has no support for this yet.  The only thing you
      can do is	to find	the address of the structure itself, then 
      calculate	the offset of each individual member of	the structure in 
      order to display it.

      -------------------------------------------------------------------
      22. "FILE NAME IS NOT VALID" ERROR
      -------------------------------------------------------------------
	 Problem: When attempting to open a new	file under MS Excel (or	
      any other	utility	which uses COMMDLG.DLL), the message "File name 
      is not valid" is displayed.
	 Solution: The Soft-ICE/W directory contains a COMMDLG.DLL file	
      which was	intended to fix	a bug that occurs only with Windows 3.0. 
	 When Soft-ICE/W is used to load Windows, its directory	becomes	
      the default directory. Normally COMMDLG.DLL is in	a subdirectory of
      the Soft-ICE/W directory;	if it is in the	main directory,	any 
      utility which uses COMMDLG.DLL will load this copy rather	than the 
      correct version in the Windows directory.
	 To fix	this problem, simply delete the	COMMDLG.DLL file from the
      Soft-ICE/W directory.

      -------------------------------------------------------------------
      23. GP FAULT IN WLDR - BORLAND PROGRAMS
      -------------------------------------------------------------------
	 Problem: GP fault when	using WLDR to load a program compiled 
      with Borland.
	 Solution: If a	module is compiled without debug data, any 
      symbols in that module are put into the Public Symbol block. If the
      Public Symbol block is greater than 64K, WLDR will get a GP fault. 
      To eliminate this, compile more of the modules with debug	data, 
      which puts their symbols within the debug	data for that module 
      rather than in the Publics.

      -------------------------------------------------------------------
      24. VIDMODE DOESN'T WORK (VERSION 1.2 ON)
      -------------------------------------------------------------------
	 Problem: The VIDMODE program does not give a satisfactory 
      display with high	resolution graphics mode.
	 Solution: Beginning with Version 1.2, if the keyword VDD is used
      in WINICE.DAT, Winice will call the Windows display driver 
      directly.	This keyword must be on	a line by itself in WINICE.DAT.
	 There are two disadvantages with this method: first, it cannot	
      be used when debugging the display driver	since it is calling this 
      driver. Second, you cannot debug Windows initialization (by 
      removing the "X;"	from the INIT string in	WINICE.DAT) because the	
      display driver has not yet been loaded, and so the Soft-ICE screen
      cannot display.

      -------------------------------------------------------------------
      25. USING	WLOG WITH MS-DOS 6.0
      -------------------------------------------------------------------
	 On some systems, WLOG does not	work correctly under MS-DOS 6.0. 
      Two separate types of problems have been reported. In both cases,	
      there is a work-around.

	 The first problem occurs using	the WLOG icon. Conditions related
      to the problem are that the DOS Soft-ICE is loaded (in CONFIG.SYS),
      disk compression (DBLSPACE) is enabled, and the system has 5Mb or
      less memory.
	 If Windows is terminated without any further major operations 
      after the	WLOG, the LOG file will	not be on the disk. However, if	
      WLOG is run a second time, or if the system is rebooted or if the	
      UNDELETE command is run (even if nothing is undeleted), the LOG 
      file will	now show up in the correct directory. 

	 The other problem occurs when using WLOG in a DOS box;	it may be
      related to disk compression.
	 When the LOG file is written for the first time, the file size	
      is always	256 bytes long.	The contents of	the LOG	file are the same
      two bytes	repeated 128 times. If the WLOG	command	is repeated, the 
      LOG file will now	be the right size and contain the correct history
      data.

      -------------------------------------------------------------------
      26. CANNOT SYNCHRONIZE REMOTE DEBUGGING
      -------------------------------------------------------------------
	 Problem: When attempting remote debugging with	the SERIAL 
      command, WINICE cannot synchronize with the remote PC. However,
      other communications programs can	be run successfully.
	 Solution: Many	communications programs	do not require a true
      null modem cable because they do not check all the control signals.
      The remote debugging feature in Soft-ICE/W does monitor all the
      control signals, so a true null modem cable is required. The lines
      in the cable must	be connected as	follows:

		  PIN #	CONNECTS TO OPPOSITE PIN #
		    2  ----------------------  3
		    3  ----------------------  2
		    4  ----------------------  5
		    5  ----------------------  4
		  6 & 8	--------------------- 20
		   20 ---------------------- 6 & 8
		    7 -----------------------  7

      If you have a 9 pin cable, see the SERIAL.HLP file on our	BBS or
      CompuServe.	

      -------------------------------------------------------------------
      27. LOADING GDI, KERNEL &	USER WHEN USING	MSC8.00	COMPILER
      -------------------------------------------------------------------
	 If you	are debugging programs compiled	with the Microsoft C 8.00
      (Visual C) compiler, and you are using "LOAD=" statements	within 
      WINICE.DAT to load debug data for	USER, KERNEL and GDI, you must 
      put a .SYM extension in these file names rather than .EXE.

      -------------------------------------------------------------------
