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.