
Most of SoftICE's important settings are controlled by a companion application, DSConfig, which shows up on the Start Menu as Settings, and also runs automatically during installation to let you set things up. DSConfig stores settings in different places, but all of SoftICE's settings go in one of two places: the registry, and a file in Windows\System32\Drivers called WINICE.DAT. (The name comes from the days when the Windows 9x version of SoftICE was new; SoftICE for Win9x was also called WinICE.)
It's usually best to use the DSConfig application to set up SoftICE. There are, however, a few settings you can change in SoftICE which are not exposed by DSConfig, but which can be changed in WINICE.DAT. These settings are mostly not documented, but some of them may prove useful, so here they are. Usually you'll find them capitalized, but entries in WINICE.DAT are case-insensitive.
| Setting | DSConfig? | Type | Default | Meaning |
|---|---|---|---|---|
| CheckForStrings | Yes | ON/OFF | ON | SoftICE checks assembly instruction operands to see if they point to anything that looks like an ASCII or Unicode string. If so, it displays the string as a comment following the disassembled instruction. You can turn this off by setting this option to ON. |
| CodeMode | Yes | ON/OFF | OFF | Normally when SoftICE is displaying disassembled code, it doesn't display the original code bytes it is disassembling. If you want to see them for any reason, you can either use the command CODE ON, or you can set this option to ON. |
| CPUSpeed | No | Numeric | N/A | This value sets the speed of the CPU in MHz. This will override SoftICE's speed detection code, and screw up a lot of timing routines if it's set wrong. There's probably no good reason ever to use this. |
| DDraw | Yes | ON/OFF | ON | This flag controls whether SoftICE uses a direct draw surface for its window. Since there are quite a few video options in different places, changing this flag manually is not a good idea. |
| DisableEvalAddr | No | ON/OFF | OFF | This one is a little hard to explain. SoftICE uses an expression evaluator to parse most command parameters. The expression evaluator looks up symbols, does math, and usually does a bang-up job of returning a sensible result. There are a few commands (BPX, BPM, D, and E), though, where most users' intuition leads them to expect a certain syntax to work, and it doesn't. The problem arises because these commands want addresses for parameters, not values. So these commands all request that the expression evaluator return an address rather than a value. The problem is, in some cases the user may actually want to use a value (think D myStruct.ptr where ptris a pointer to some interesting memory location). This option exists in case there are users who find this problem more awkward than using '&' operators in front of many of the parameters to these commands. If this option is set to ON, BPX, BPM, D, and E will all use the expression evaluator the same way as all the other SoftICE commands. (Told ya it was hard to explain). |
| DisassemblyHints | Yes | ON/OFF | ON | Disassembly hints are directional arrows that appear next to call and jump instructions to tell you which way the call or jump is going. They are helpful, but if for some reason you don't want them, you can use this option to turn them off. |
| EchoKeys | No | ON/OFF | OFF | Controls whether SoftICE is allowed to program the keystate directly on PS/2 keyboards. This is a troubleshooting option, and is probably of no use today. |
| HST | Yes | Numeric | 256 | This controls the amount of memory (in KB) SoftICE allocates for its history buffer. If you can't scroll back as far in the history window as you'd like, you need to increase this value. |
| LBRecord | No | ON/OFF | ON | Enables or disables the recording of last-branch-taken information from the MSRs on Pentium III processors. This information is displayed at some breakpoints and exceptions. Right now this feature isn't implemented for Pentium IV processors, which record it differently. |
| LowerCase | Yes | ON/OFF | OFF | This controls whether disassembled opcodes are displayed in upper or lower case. If you prefer to see lower case, set this to ON. |
| Macros | Yes | Numeric | 32 | This option controls the number of macros SoftICE allocates space for when it starts. Increasing this number will consume more kernel memory. |
| MaxBreaks | No | Numeric | 32 | This controls the maximum number of breakpoints SoftICE will allow to be set at once. Increasing this number will consume more kernel memory. |
| Mouse | Yes | ON/OFF | ON | If set to OFF, disables SoftICE's mouse support. This might be handy if you were debugging a mouse driver, for instance. This setting will disable USB and PS/2 mice, but it won't disable USB mouse patching; for that, use the troubleshooting tab in DSConfig. |
| Names | No | Numeric | 256 | This controls the number of user-defined names that can be set up using the NAME command. Increasing this number will consume more kernel memory. |
| NMI | Yes | ON/OFF | ON | Controls whether SoftICE will trap NMI interrupts. The only reason to use this setting is to allow SoftICE to catch interrupts generated from a special expansion board that generates NMIs when a trigger is pressed. This will cause the debugger to pop up. |
| NTSyms | No | ON/OFF | OFF | SoftICE hooks a number of functions in the kernel. Normally it finds these functions using data from the OSINFO.DAT file. If this option is ON, SoftICE instead looks for this information in loaded symbol tables and registry entries. This can sometimes allow the debugger to run on an OS version for which it has no valid OSINFO file. |
| NumLock | No | ON/OFF | OFF | This controls the default state of the NumLock LED in SoftICE. You might wonder why this option isn't exposed in DSConfig. Someday, maybe. |
| NoLEDS | Yes | ON/OFF | OFF | When ON, SoftICE will not set the keyboard LEDs. This is a troubleshooting option. |
| NoPage | Yes | ON/OFF | OFF | When SoftICE encounters a page that is marked not present, but is in fact loaded into physical memory already, it will attempt to find the page in physical memory and mark it present so that it will be accessible while SoftICE is popped up. When popping down, SoftICE restores all such pages to their original state. Setting this flag will disable this behavior. This is a troubleshooting option. | Pentium | Yes | ON/OFF | ON | Turns on or off support for features found originally on the Pentium Processor. Not used anymore, for obvious reasons. |
| RegNoCPU | No | ON/OFF | OFF | On systems with more than one CPU, SoftICE displays the active CPU number in the corner of the register window. If for some reason this display offends the eye, it can be turned off with this option. |
| Selectors | Yes | ON/OFF | ON | Normally disassembled code is displayed with the full selector:offset address at the beginning of each line. This is a waste of space, as the selector is always the same and is seldom important in 32-bit Windows programming anyway. If you set this option to ON, the selector is displayed once, at the top of the code window, instead. This option doesn't currently affect data windows, which always display selectors. |
| SYM | Yes | Numeric | 512 | This controls the amount of memory (in KB) allocated for symbol file storage. If you run out of memory trying to load NMS files, you need to increase this value. |
| TypeFormat | No | 1, 2, 3 | 3 | This option controls the display of typed data in SoftICE. There are three things to display: the variable's name, its type name, and its value. The three possible values of this option represent three different orders for this information. You can also change this on-the-fly using the SET TYPEFORMAT command. |
| Verbose | Yes | ON/OFF | OFF | When this is ON, SoftICE will display more information in a few places than it normally would. Mostly this affects what SoftICE displays on process creation and exiting, so this option isn't all that useful. |