NuMega SoftICE 4.05 Release Notes
Table Of Contents
- What’s New in SoftICE 4.05 (versus 4.0)
Event viewing for BoundsChecker memory events (EVMEM command)
Using SoftICE on a System without a Keyboard or Monitor
Numerous bug fixes
- Known Anomalies in version 4.05
- Setting Up Remote Debugging
- System Requirements
- SoftICE Video Troubleshooting Tips
- Quick Start to Debugging
- Using SoftICE with Windows 2000
- Using Multiple Monitors with Windows 98 and Windows 2000
- Debugging Display Drivers with Windows 98
- Using SoftICE with Visual C++ 5.0 and Visual C++ 6.0
- Using SoftICE with Borland C++ Builder
- Known Anomalies
- Troubleshooting Tips
- Reporting Problems And Suggestions
What’s New in SoftICE 4.05 (versus 4.0)
- You can display detailed information about BoundsChecker memory events in the Command window using the EVMEM command.
Minor Features/Enhancements/Bug fixes in version 4.05
- You can now use SoftICE in headless mode. Headless mode implies absence of keyboard and video support on the local machine. A user must remotely connect to the debugger over the serial port or network when running in Headless mode. Configuring SoftICE to run in Headless mode ensures that SoftICE does not interact with keyboard, mouse, or video hardware in anyway.
This is advantageous in situations when SoftICE does not support the video card, keyboard, or mouse on the local machine, or when you are debugging drivers for those hardware components. You must remotely connect to the debugger over the serial port or network when running in headless mode. Configuring SoftICE to run in headless mode ensures that SoftICE does not interact with keyboard, mouse, or video hardware in any way. This would be advantageous in situations when SoftICE does not support the video card, keyboard, or mouse on the local machine, or when you are debugging drivers for those hardware components.
Enabling support for SoftICE on a system without a keyboard or monitor involves setting one of two registry values. To disable SoftICE video support, under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntice, create a DWORD registry value "NullVGA" and set it equal to "1". To disable the keyboard, create a DWORD value "NullKeyboard" in the same location and set it to "1".
Known Anomalies in Version 4.05
- The minimum memory requirement for BoundsChecker Driver Edition is 32 MB. If you run BoundsChecker or FieldAgent and SoftICE on a Windows NT or Windows 2000 system with 32 MB memory, you must reduce the SoftICE video buffer to 1024 KB and use the small size history buffer. If you try to set video memory to less than 1024 KB, SoftICE might behave incorrectly. This is not an issue when SoftICE is not running.
- This release of SoftICE does not support Power Management. Disable Standby\Hibernate modes when you run SoftICE. If the machine goes into Standby\Hibernate mode while SoftICE is running, it will be unable to come back.
- When SoftICE is loaded, BoundsChecker Driver Edition no longer collects READ_PORT_UCHAR calls from the keyboard driver (i8042prt.sys, ms8042.sys, L8042prt.sys, etc.). This occurs because SoftICE hooks READ_PORT_UCHAR to support keyboard functionality.
- SoftICE does not support special features of Synaptics touch pads. These touch pads are components in many laptop machines. There are two workarounds for this problem.
- Configure the mouse to use the Standard PS\2 drivers which are supported.
- Run SoftICE in headless mode remotely over the serial port or network.
- Currently, the specifiers TID, PID, THREAD and PROC do not work in the expression
evaluator (?) on Windows 98.
Setting Up Remote Debugging
To install the SoftICE drivers on Windows NT:
- Open Control Panel. Double-click Network.
- Select Adapters. Remove the existing driver, then Add the driver. Click Have Disk when prompted. Windows NT might prompt you to reboot.
- Browse to the dialog box to the SoftICE\Network\NE2000 or SoftICE\Network\3C90X directory of your DriverStudio install. Then click OK to install the new driver.
To install the SoftICE drivers on Windows 98 or Windows 95:
For NE2000 or compatible:
- Make a backup copy of NE2000.SYS in the \WINDOWS\SYSTEM directory
copy \WINDOWS\SYSTEM\NE2000.SYS \WINDOWS\SYSTEM\NE2000.ORG
- Copy the file NMNE2K4.SYS from the DriverStudio\SoftICE\Network\NE2000 directory over the NE2000.SYS file in the \WINDOWS\SYSTEM directory.
copy "\Program Files\NuMega\DriverStudio\SoftICE\Network\NE2000\NMNE2K4.SYS" \WINDOWS\SYSTEM\NE2000.SYS
- Reboot the system
For 3C90X using EL90XND4.SYS:
- Make a backup copy of EL90XND4.SYS in the \WINDOWS\SYSTEM directory
copy \WINDOWS\SYSTEM\EL90XND4.SYS \WINDOWS\SYSTEM\EL90XND4.ORG
- Copy the file NM90XND4.SYS from the DriverStudio\SoftICE\Network\3C90X directory over the EL90XND4.SYS file in the \WINDOWS\SYSTEM directory.
copy "\Program Files\NuMega\DriverStudio\SoftICE\Network\3C90X\NM90XND4.SYS" \WINDOWS\SYSTEM\EL90XND4.SYS
- Reboot the system
For 3C90X using EL90XBC4.SYS:
- Make a backup copy of EL90XBC4.SYS in the \WINDOWS\SYSTEM directory
copy \WINDOWS\SYSTEM\EL90XBC4.SYS \WINDOWS\SYSTEM\EL90XBC4.ORG
- Copy the file NM90XBC4.SYS from the DriverStudio\SoftICE\Network\3C90X directory over the EL90XBC4.SYS file in the \WINDOWS\SYSTEM directory.
copy "\Program Files\NuMega\DriverStudio\SoftICE\Network\3C90X\NM90XBC4.SYS" \WINDOWS\SYSTEM\EL90XBC4.SYS
- Reboot the system
For All Systems:
- 5 MB disk space required
- 2.5 MB disk space optional (Adobe Acrobat Reader for on-line manuals)
- Microsoft-compatible Serial or PS/2 mouse (optional)
- Single monitor and an additional monochrome monitor are supported
- Remote debugging is supported for NE2000-compatible or 3Com network cards
For Windows 95 and Windows 98:
- Windows 95 and Windows 98
- 16 MB RAM minimum (32 MB recommended)
For Windows NT and Windows 2000:
- Intel x86 uniprocessor or Intel-standard SMP system
- For Windows NT, release 4.0 (Build 1381)
- 32 MB RAM minimum (64 MB recommended)
- Installation account with administrator privileges
- To install SoftICE, run SETUP.EXE. For Windows NT, run Setup from an account with administrator rights.
- Setup will prompt you to select your display adapter's make and model, and allow you to select the "Universal" video driver or an additional monochrome monitor.
- Setup will prompt you to select the type of mouse you are using (none, serial-COM1, serial-COM2, or PS/2). The bus mouse is not supported.
- You can change your display adapter or mouse later by running Display Adapter or Mouse Setup from the SoftICE start menu (Windows 95) or the SoftICE program group (Windows NT).
- For Windows NT only: Setup will prompt you to select a startup mode for SoftICE. You can change your startup mode later by running Startup Mode Setup from the SoftICE program group.
- To uninstall SoftICE, select Remove SoftICE from the SoftICE start menu (Windows 95) or from the SoftICE program group (Windows NT).
SoftICE Video Troubleshooting Tips
For the most current Video Troubleshooting Tips, please visit our on-line Knowledge Base on the Support section of our web site at:
Beginning with version 3.2, SoftICE (95/NT) supports more video devices than ever before by taking advantage of Microsoft DirectX technology. This will allow SoftICE's Universal Video Driver (UVD) to work with virtually all new video cards supported by ActiveX/Direct Draw.
NOTE: Both the video card AND the video card driver must support DirectDraw in order to the UVD to work.
If you are having trouble getting SoftICE to run with your video card AND it supports Direct Draw technology:
- Run the SoftICE Display Adapter Setup
- From the manufacturers list, select STANDARD VGA
- Check the Universal Video Driver (UVD) box
- Press the TEST button to confirm that this setup works.
If this does not work and you are sure that your video card supports DirectDraw, then we recommend that you try:
- Downloading and installing the most current version of your video card driver provided by the card manufacturer. Updated drivers usually add support for DirectDraw to cards that support it.
- For NT, try changing the SoftICE startup to either Automatic or Manual mode
If you are unable to use SoftICE with your video card AND it supports DirectX, please provide us with the following information:
If your video card does not support Direct Draw:
- Download and install the most current version of your video card driver provided by the manufacturer
- Download and install the last version of the SoftICE legacy video drivers from our FTP site at:
Windows 95: SIWVID95.ZIP
Windows NT: SIWVIDNT.ZIP
- Run the SoftICE Display Adapter Setup and reselect your card.
Other options which are detailed in the users guide, include the ability to use SoftICE:
- with a second MONOCHROME monitor and a Hercules-compatible card,
- through a serial cable connection, or
- in STANDARD VGA mode. To use SoftICE in Standard VGA mode you must:
- From the OS Display utility, change your display adapter to:
Manufacturer: Standard Display Types
Display: VGA Compatible Display Adapter
- From the SoftICE display adapter setup, set SoftICE to Standard VGA and DO NOT check the Universal Video Driver
If none of these options work for you, then we highly recommend that you obtain a newer video card which supports Direct Draw. Please note that NuMega will no longer create custom drivers to support new video cards. All new video card support will be handled through Direct Draw drivers. This will allow SoftICE to work with virtually all new video cards supported by Direct Draw.
Quick Start to Debugging
- Run Symbol Loader (LOADER32.EXE).
- Choose File-Open Module, and select the module you want to debug.
- Choose Module-Load (or click the Load button on the toolbar). SoftICE automatically extracts symbol information from your module, creates a .NMS file containing the information, loads the symbols and source code, and, if you are loading an EXE file, loads the EXE and sets a breakpoint. You're ready to start debugging.
Other features to check in the new symbol loader:
- Module-Settings (symbol translation and debug options for your module)
- Module-Translate (creates a .NMS file for pre-loading at start up)
- Edit-SoftICE Initialization Settings (replaces WINICE.DAT)
- File-Load Exports (loads exported symbols for DLLs you select)
- File-Save SoftICE History (replaces WLOG and DLOG)
Using SoftICE with Windows 2000
WINDOWS 2000 is a beta operating system. Unfortunately, this means that the subtle changes to Windows 2000 internals between interim builds can break key functionality in SoftICE. We have tested SoftICE for NT version 4.0 with specific builds of Windows 2000 (builds 1946, 2000 2021, and 2031). SoftICE is supported with known limitations on these builds. Refer to Nt5Boot.txt for in the SoftICE directory for more information about using SoftICE on Windows 2000.
There are different manual configurations that can be made to SoftICE to increase the chance of supporting builds other than 1946, 2000, 2021, and 2031. However, support cannot be guaranteed on builds of Windows 2000 other than 1946, 2000, 2021, and 2031 at this point.
Here is a list of changes that must be made for Windows 2000 support.
- Problems with file system access in boot drivers have been fixed for RC2 (all builds after 2128). It is no longer necessary to run ICEPACK.exe.
- If using an Windows 2000 build other than build 1946, 2000, 2021, or 2031, you will need to do the following. Place the NTSYMBOLS=ON keyword on a separate line in winice.dat, and automatically load symbols for NTOSKRNL. This keyword will allow SoftICE to use the kernel symbols for hooking key routines and data. Be sure that the symbols being loaded are properly matched to the build of NTOSKRNL.exe. The method that SoftICE uses alternatively is impacted by binary changes in the NTOSKRNL module. sing symbols eliminates this impact. Automatic loading of symbols is done via the Symbol Loader (Loader32.exe) Edit|SoftICE Initialization Settings menu item. Symbols for NTOSKRNL are provide in the form of a ntoskrnl.dbg file. This file can be translated, using the Loader32.exe or nmsym.exe, to create a .nms file. NOTE: The debug binaries for Windows 2000 are built with VC 6.0. Place the file 'mspdb60.dll' in the path to translate symbols for this and later builds. This file is located on setup CD 1, in the Common\MSDEV98\BIN directory.
- Keyboard support will most likely break in builds of Windows 2000 that are not specifically tested. This is due to the fact that the SoftICE keyboard driver patching is dependent on particular binary images. For keyboard support on builds of Windows 2000 that are not specifically tested, download the i8042prt.sys driver on ftp.numega.com\anonymous\tech. Replace the driver currently installed on your system with the downloaded driver (please backup the original driver). This version of the driver is supported. It is simply the i8042prt.sys driver from a build that is specifically supported.
- It is necessary to disable the boot GUI that was added in Windows 2000 (NT 5.0) build 1814. There have been some cases where the boot GUI causes problems with SoftICE's VGA support. SoftICE will not be able to popup in VGA or text mode if the boot GUI is not disabled. Here is an example of boot.ini with a /noguiboot switch.
The ‘Press Esc to cancel loading SoftICE’ message is not displayed properly when SoftICE is loaded as a system driver. However, you can still press Esc to cancel loading SoftICE.
SoftICE cannot patch the keyboard driver shipped with Windows 2000 build 2031 (Checked Build). Replace the version of the driver shipped with the Checked Build of 2031 with the version shipped with the Release Build.
Refer to the NuMega Lab support web page for ongoing support for Windows 2000. Instructions, interim builds, and keyboard drivers are provided at http://www.numega.com/support/support.shtml.
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 5.00" /
Using Multiple Monitors with Windows 98 and Windows 2000
Windows 98 and WINDOWS 2000 support multiple display devices. One of the devices, called the primary display, supports VGA (this is the device that is active at boot time); the other devices run with VGA disabled.
In the video setup phase of the installation, be sure to select the device being used as the primary video card. For example, if you're using an S3 card as the primary display and an ATI card as the secondary display, tell SoftICE to use the S3 card.
Specifying Which Monitor to Use
When the Universal Video Driver is in use, it is possible to control which monitor SoftICE will use. Add a line to WINICE.DAT such as this:
This tells SoftICE to use the "second" monitor. Other numbers (0, 1, 2, etc) can be used to select the desired display.
When Using WINDOWS 2000 if you install or uninstall a video card, be sure to run the SoftICE video setup program after a successful reboot in your new configuration.
Debugging Display Drivers with Windows 98
With Windows 98 there can be multiple display drivers loaded simultaneously, and multiple instances of display drivers. Unfortunately, all these drivers have the same module name, DISPLAY, so SoftICE doesn't know which driver it should associate with the symbol table. The symbol table will be associated with the first driver loaded, which may not be the one you want to debug.
There are two solutions to this problem:
- Don't load multiple display drivers or display driver instances unless it's really necessary.
- Use the SYMLOC command to tell SoftICE which module it should associate with the symbol table, as follows:
Where hmod is a module handle (a 16-bit number). Use the MOD command (e.g. MOD DISPLAY) to get a list of the loaded display drivers and their handles.
Using SoftICE with Visual C++ 5.0 and Visual C++ 6.0
When linking, the /PDBTYPE:CON option must be used (/PDBTYPE:SEPT is not supported). To set this option from the IDE, go to the Link tab of the project settings, select Category "Debug", and ensure that the "Separate types" option is NOT selected.
Do not select the "Program Database Edit and Continue" debug info option. On the command-line, do not use the /ZI, rather use /Zi.
Notes for building VxDs with VC++ 5.0:
- You MUST use link V4.1 or later. Earlier versions do not emit debug information properly.
- You must NOT link using the /PDB:NONE option. If you link with /PDB:NONE you will not get any debug information
Using SoftICE with Borland C++ Builder
C++ Builder stores the Borland debug information in .TDS files separate from the executable. TDS files are also produced by the TDSTRP32 utility. To load symbols and source into SoftICE, simply use the Symbol Loader to load the .TDS file. If you want to load the executable from the Symbol Loader that must be done afterward as a separate step. Alternatively, you could set the desired breakpoints and then load the executable normally.
- SoftICE does not currently support UVD mode using the S3Legacy driver. There are two ways to determine whether you are using this. The first way is to start ntice. If you have this DDI driver installed, you will receive a page fault and KeBugCheck shortly after starting SoftICE (assuming manual mode start). The second way to determine this is to start the Device Manager, double-click your display card, click the Driver tab, and click the Driver Details tab. If Driver Files contains an entry for "%SystemRoot%\system32\S3LEGACY.DLL", then you have one of these drivers. Until a permanent solution is devised, the only solution is not to use cards with this chipset in UVD mode.
- When using the universal video driver, you may notice that the Windows cursor overlays the SoftICE display. This occurs because the Windows cursor is (usually) implemented as a hardware sprite. If this bothers you, one way around it is to select a color or animated cursor (in the Windows control panel settings); the operating system will revert to a software cursor, which can be erased by the SoftICE display rendering.
- SoftICE does not support the CENTER option of the SET command for Matrox Millenium II video cards.
- Under the following conditions SoftICE for Windows NT may appear to hang your machine (it is not really hung however!):
- You start SoftICE for Windows NT manually, and you are NOT in full-screen (VGA) mode.
- You are using the universal video driver.
- You do not have an "X;" at the end of your SoftICE INIT string.
If all these conditions are met, SoftICE will start but will be invisible. Press Control-D to regain control of the system. The next time you hit Control-D SoftICE should pop up normally. The reason for this anomaly is that the SoftICE universal video driver can't begin to operate until at least one command has been passed to the display driver. None of this applies to SoftICE for Windows 95.
- When debugging 16-bit programs, ? <variable> and WATCH <variable> are not supported. However, the locals window is fully functional.
- The NT 3.51 checked build crashes when SoftICE is loaded using the default winice.dat file. To fix the problem, change winice.dat as follows:
- Add the line: mouse=off
- If you are using a mouse in SoftICE, add "set mouse on" to your INIT string. Example: init="set mouse on;X;"
- SoftICE 3.2 for Windows 95 is not compatible with BoundsChecker for Windows 3.x (16-bit).
- The Windows 95 shutdown option Restart computer in MS-DOS mode is not supported when running oftICE. Loading SoftICE after choosing this option causes the system to become unstable and eventually crash. To return to MS-DOS after you shut down Windows 95, set BOOTGUI=0 in MSDOS.SYS (really an ini file with hidden, read-only, system attributes). Then use Shutdown the Computer to restart your system.
- Windows NT becomes unstable when it runs low on non-paged memory. This can occur if you load many symbols and source files. Use Symbol Loader-Help-About Symbol loader to monitor SoftICE memory usage. You may need to be selective about how much information you load into SoftICE. SoftICE loads all source files by default. To limit the source files, list the files to be loaded in a .SRC file with the same name as your module. Put the .SRC file in the same directory with your executable.
- If you are using a Matrox G400 dual-head video card, complete the following steps to use SoftICE.
- In the Registry, create a reg_sz under the ntice service key called
InstalledDisplayDrivers and set this value to G400D. If you
are running SoftICE as a boot/system driver, this should be
all you need to do.
- If you want to run SoftICE in automatic/manual mode, you need
to also add an entry to the G400\Device0 service key.
Underneath this entry, create a reg_multi_sz called
InstalledDisplayDrivers and set it to G400D.
- The DriverStudio installation disables the kernel write-protection functionality added to Windows 2000. To re-enable Windows 2000, kernel write protection functionality, set the following DWORD registry value:
HKLM\System\CurrentControlSet\Control\Session Manager\Memory Managment\EnforceWriteProtection = 1
SoftICE does not load when you set this value.
- Erratic keyboard behavior: If the keyboard behaves erratically when you load SoftICE, run Symbol Loader, select Edit-SoftICE Initialization Settings, and select the following option on the Troubleshooting page, and restart SoftICE:
- Disable Num Lock and Caps Lock programming
If the erratic behavior persists in Windows NT, select this Troubleshooting option as well:
- Do not patch keyboard driver
- Erratic mouse pointer movement: If mouse movement occurs when SoftICE pops up, the operating system and the mouse hardware might become out of sync because part of a mouse packet is lost. This results in erratic mouse pointer movement. Use one of the following to resync the mouse:
- Type CTRL-M in SoftICE. You may need to do this a few times.
- Switch to a full screen DOS box in Windows NT.
- Use SET MOUSE OFF, followed by SET MOUSE ON, in Windows 95.
- If you encounter a situation where either program logic or a corrupt data structure causes SoftICE to enter an endless loop and the informational commands do not respond in a timely manner, press the Escape (Esc) key one or more times to abort the current operation.
- Debugging Delphi Programs - Be sure to use the $O- option to turn off optimizations. When optimizations are on, many unreferenced parameters and locals are optimized out, although some reference to them still exists in the debug information.
Known Problems Related to Watcom C++
- Watcom C++ V11.0 does not seem to produce correct Codeview debug information in all cases (line number sections are missing). No such problem was observed with earlier versions of Watcom C++.
- When Watcom C++ V10.6 is used with the Microsoft linker (from VC++ V4.2) to produce VxDs, the line number debug information produced by the linker is not correct. The reason for this is unknown, and may affect other versions as well.
Windows 95 OSR2 Crash Problem Related to 3Com Ethernet card
A crash during system startup may occur when using the NDIS3 miniport driver on the EtherDisk v2.1x for the 3Com EtherLink and Fast EtherLink XL cards with Windows 95 OSR2. This is caused by a memory management problem in the 3Com driver when running under Win95-OSR2. Although not related to SoftICE, this problem is more likely to manifest itself when SoftICE is loaded.
An updated Ethernet driver (currently in beta) which resolves the problem is available from 3Com.
Reporting Problems And Suggestions
On June 15, 1998, NuMega launched a free Web-based Knowledge Base to assist our customers 24 hours a day! At no charge, users can access this service via the Support section of our web site at: