Stepping is slow using Visual Softice



Slow response time running a debug session in Visual Softice


A few hints to make the best use of Visual SoftICE:

(a) Always have local (master side) copies of the images (executables, drivers, DLL's, etc...) and symbol files you are interested in. This greatly improves performance, reduces roundtrips to the target, and ensure image relative addressing and fixups are done accurately. Make sure your symbol and executable paths (SET SYMPATH, SET EXEPATH) include the project you are debugging and the OS symbols.

(1) Use symbol server to retrieve the operating system tables you need, on-demand (SET SYMSRVSEARCH). Once stored on your machine, they will be used whenever necessary, locally. Using Visual SoftICE's on demand symbol loading in conjunction with Microsoft's symbol server technology makes it simple and easy to get the PDB's for the proper version of the OS images running on the target. (Please note this functionality is off by default on installation).

(2) Everything works better with complete symbols, especially stack walking and stepping.

(b) Be aware that if you are source stepping through code, for which there is no available symbol info, an attempt to locate symbol data for each image in the stack will be issued, at each step. This can be very slow, especially if you have a large symbol search path. You can turn off automatic symbol loading for this scenario (SET SYMTABLEAUTOLOAD), although it is recommended instead to have handy all the symbols you are interested in. (Remember, symbols don't need to be preloaded with VSI, except for virtual breakpoints).

(c) The watch page can slow down performance of the debugger, if it contains large quantities of expressions which require symbol data that is not present. At each stop or step, each expression will be evaluated and an attempt to locate symbols issued. This again can be manually controlled by turning off the automatic symbol loading behavior (SET SYMTABLEAUTOLOAD), but is not recommended. It is better to ensure proper symbols are available, and to maintain a limited set of expressions in the watch page.

(d) Simplify your workspace. Each page receives notifications about changes in the target, and most react in someway to these changes. If you find that you don't need all the pages all the time, then close out the ones you don't use. Optionally, you can change the state of a page from Live (receiving events and reacting) to Manual (only update when you tell it to), all the way to Snapshot (current data contents read-only - no updates). Workspaces and be loaded and saved and will retain which pages you had, where, and in what state.

(e) Locals page (and locals command) displays a paged out error. This is most likely from symbols being out of date, (not matching the image you are actually stopped in). Additionally, if you are at the early part of a function (in a prologue or function descriptor), the locals may actually not be available yet. This is also true when stepping into epilogues at the end of functions.

Old KB# 11850
Comment List
Related Discussions