views:

305

answers:

0

I am debugging a minidump in WinDbg and the Visual Studio 2005 debugger and they produce different results.

WinDbg gets it wrong

When doing KP in WinDbg, the relevant part of the stacktrace is:

0bb6ef30 0a4a25b8 MyModule!SomeClass::methodB(
                  void * buffer = 0x05d8d800, 
                  int bufferLen = 1797233953, 
                  int ms = 114125176)+0x245 [SomeFile.cpp @ 483]
0bb6f0bc 0a45baaa MyModule!SomeClass::methodA(
                  int ms = 1797233953)+0xb8 [SomeFile.cpp @ 504]

As you can see the value for ms in methodA becomes the value for bufferLen in methodB which looks like the stack isn't being read completely. Even more, ms in methodA should be 5000 since the code is something like:

const int TIMEOUT = 5000;
object.methodA(TIMEOUT);


The Visual Studio debugger gets it right

MyModule.ocx!SomeClass::methodB(void * buffer=0x0bb6efb0, int bufferLen=256, int ms=5000)  Line 483 + 0xae bytes C++
MyModule.ocx!SomeClass::methodA(int ms=5000)  Line 504 C++


My configuration

I use the Microsoft symbol server and I have my binaries and PDBs (full symbols, not stripped) in a symbol server accessible via \\cebradc\all_symbols.

In the Modules window of Visual Studio I get:

  • name: MyModule.ocx
  • path: \\cebradc\all_symbols\MyModule.ocx\4b1cf7a5504000\MyModule.ocx
  • symbol status: Symbols loaded.
  • symbol file: \\cebradc\all_symbols\MyModule.pdb\8BC6A9FD1655407092780F8E2124FB0B2\MyModule.pdb

For WinDbg, the relevant part of !lmi MyModule:

Symbol Type: PDB - Symbols loaded successfully from symbol server.
             \\cebradc\all_symbols\MyModule.pdb\8BC6A9FD1655407092780F8E2124FB0B2\MyModule.pdb
Load Report: private symbols & lines, not source indexed 
             \\cebradc\all_symbols\MyModule.pdb\8BC6A9FD1655407092780F8E2124FB0B2\MyModule.pdb

For WinDbg, the relevant part of lm v m MyModule:

Loaded symbol image file: MyModule.ocx
Mapped memory image file: \\cebradc\all_symbols\MyModule.ocx\4B1CF7A5504000\MyModule.ocx


It seems to me that the symbols are OK and still the parameters in WinDbg are wrong. It's the first time I've used WinDbg and I don't really know how to troubleshoot it.