Question

I have read the questions that already on StackOverflow, but I still can't make it work.

I have

  • a mini dump file from a customer
  • the exact same version of our code that the customer has got
  • in the debug directory, .pdb files for the code.

I tried putting the mini dump file in the debug directory, then opening it in Visual Studio 2010. I don't know if this was the correct thing to do, or what to do next.

"Start Debugging" is greyed out in the normal Debug menu.

There is a box with "Actions" in the top right hand corner of the Minidump File Summary tab. So I clicked on "Debug with Native Only" but all I get is "There is no source code available for the current location."

I must be missing something really simple - please can someone give me a hint?

Was it helpful?

Solution

Just to pull the various bits of information together into an answer:

Do you have .pdb files that were created when the program was built? Just rebuilding the same source doesn't work, you need to keep .pdb files for every build. – Alex Farber Feb 20 '13 at 11:05

"The debugger matches information like filename, timestamp and checksum when matching a PDB with a binary (DLL or exe)." (Saikat Sen, Codeproject article)

Following AlexFarber's hint, I copied the source code and release folder from the customer's build onto my computer (the whole build had been saved, including the .pdb and .exe files in the Release folder).

Then I copied the dump file into the release folder, and loaded the Microsoft symbols into the same folder.

Then I opened the dump file again into Visual Studio 2010.

I didn't see anything more helpful than before, which I assume is due to this - see the accepted answer on this SO question. I am using a C# and a .NET 2.0 assembly, and it seems that I can only view source code for a .NET 4.0 assembly.

I will try the WinDbg add-in called sos.dll recommended by Hans Passant on the same question next.

How to get round the need to use the pdb files from the same build:

I think you can get round this requirement for the same .pdb files if you use WinDbg. From virtualdub "If the debugger is stubborn and doesn't want to load symbols because it thinks they don't match, you can use .symopt+ 0x40 to set the "load anything" flag."

Also, if I understand correctly, you can use the chkmatch tool referred to by sergmat above, to match up the .exe and .pdb files.

OTHER TIPS

As I understand it you have a minidump for a customer which I presume he is using a Release build of your application and a Debug PDB file.

That's your problem right there, Your PDB and the mini dump do not match. In order to view clear stack traces the PDB should have the same build configuration/platform as the one of the application that generated the dump file.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top