==================================
Exception Wizard - FAQ.TXT

Version 1.10
32bit for Windows 95/98/NT/2000

Copyright  1999 by John Carpenter
All Rights Reserved
==================================

Q: How do I create map files for my project?

Under the Project menu select Settings.  Under the C/C++ tab select the Listing Files for the Category.  Down under Listing file type choose "Assembly, Machine Code, and Source".  Now, under the Link tab select the General options.  Check the "Generate Mapfile" checkbox.  Rebuild your project.

Q: How do I walk the call stack under release mode?

If you are running Release mode on your development machine, run using the Build::Start Debug::Go command from the VC menu.  There's little overhead for doing so, and quite often when you get an exception you will have a series of addresses in your call stack window that you can use with exception wizard to follow the control path.  This way you can back out of the path until you get to your own code, just like you would in debug mode.  Take note that, just like in debug mode, the addresses up the stack are actually *return* addresses, so they will point to the instruction *after* the one within which the exception occurred.

Q: A user reported a crash to us, but what Exception Wizard is reporting makes no sense.

Are you using the map and cod files built with that user's particular exe?  You should back up your map and cod files with each release, and use the exe version number reported by the user to synch them up.  You can keep the path to old versions of the map and cod files in the Exception Wizard MRU combo box, so going back to old versions is a snap.

Q: Exception Wizard seems to get confused by inline functions.  What's up?

It is often difficult to unravel inline functions to get to the correct cpp file, especially if that inline function came from a linked in module.  The line numbers will be correct, and the cod file will be correct, but the wrong cpp will be extracted.  The cod files do not contain the correct file paths for inline functions, so there's nothing I can do about this problem at this point.  You can still use the COD file to determine which function was called, where it died in the function, etc.

Q: How can we use Exception Wizard with our DLLs?

Build the map and cod files for your DLLs just like you do with your EXEs.  When you get the exception, you can tell from the debugger's stack window which DLL the exception occurred under.  It will be listed there by name.  From here you can point Exception Wizard at the map file for that DLL and go to work.  Naturally, the DLL must be one of your DLLs because otherwise you won't have a map file.  Also, if you aren't specifying appropriate (and different) load addresses for you DLLs, then they most likely will NOT be loaded at their preferred address.  Under this situation you can use a utility from the Microsoft Platform SDK called PWALK.  PWALK.EXE allows you to track where all the DLLs in your project are being loaded, but you have to run your EXE from within PWALK.  Naturally this only works if your exception is reproducable.  You can then specify an "alternate load address" within Exception Wizard and operate as normal to find the code where the exception ocurred.