Discussion:
mfc70.pdb doesn't match mfc70.dll after applying VS2002 service pa
(too old to reply)
qo_op
2005-04-22 04:59:01 UTC
Permalink
After applying VS2002 service pack 1, I got a crash dump which I had to
perform a post-mortem debug. Unfortunately, MFC70.PDB doesn't match with the
MFC70.DLL, and therefore, VS isn't able to display the stack trace before any
MFC70 calls.

I used to be able to do this before the service pack.
Oleg Starodumov
2005-04-22 11:01:52 UTC
Permalink
Post by qo_op
After applying VS2002 service pack 1, I got a crash dump which I had to
perform a post-mortem debug. Unfortunately, MFC70.PDB doesn't match with the
MFC70.DLL, and therefore, VS isn't able to display the stack trace before any
MFC70 calls.
Are you using VS.NET to debug the dump?

If yes, what message is displayed in Modules window for MFC70.DLL?
If there is "No matching binary found" message, VS.NET cannot find the matching
executable (MFC70.DLL itself). Then you have to find the matching executable
and let VS.NET know the path to it:
Enter "MODPATH=path_to_matching_binaries" here:
Project properties | Configuration Properties | Debugging | Command Arguments

If the message in Modules window says "No symbols loaded", try to obtain
the PDB file from the symbol server:
http://support.microsoft.com/default.aspx?scid=kb;en-us;319037
http://support.microsoft.com/default.aspx?scid=kb;en-us;823242

You can also enter the path to symbol server in MODPATH setting
mentioned above, then VS.NET will download matching system DLLs
from the symbol server too (for XP or newer systems).

Regards,
Oleg
[VC++ MVP]
qo_op
2005-04-27 03:56:03 UTC
Permalink
Thanx Oleg for the answer. I had done all the things you mentioned but to no
avail.

I even start the excutable in VS.NET debugger with the symbol sever
settings. In the modules window, almost all DLLs found their debugging
information, except for MFC70.DLL, MFC70ENU.DLL. The message is: "No symbols
loaded" for these 2 files.

Right mouse click on MFC70.DLL and select "Reload symbols" to load MFC70.PDB
in the windows\system32 directory, it still says 'No symbols loaded'.

The timestamps are as followed:
MFC70.DLL 20/01/2005 4:32 PM
MFC70.PDB 20/01/2005 4:41 PM

My guess is the PDB file somehow doesn't match with its DLL ? and the symbol
server doesn't have MFC70.PDB
Post by Oleg Starodumov
Post by qo_op
After applying VS2002 service pack 1, I got a crash dump which I had to
perform a post-mortem debug. Unfortunately, MFC70.PDB doesn't match with the
MFC70.DLL, and therefore, VS isn't able to display the stack trace before any
MFC70 calls.
Are you using VS.NET to debug the dump?
If yes, what message is displayed in Modules window for MFC70.DLL?
If there is "No matching binary found" message, VS.NET cannot find the matching
executable (MFC70.DLL itself). Then you have to find the matching executable
Project properties | Configuration Properties | Debugging | Command Arguments
If the message in Modules window says "No symbols loaded", try to obtain
http://support.microsoft.com/default.aspx?scid=kb;en-us;319037
http://support.microsoft.com/default.aspx?scid=kb;en-us;823242
You can also enter the path to symbol server in MODPATH setting
mentioned above, then VS.NET will download matching system DLLs
from the symbol server too (for XP or newer systems).
Regards,
Oleg
[VC++ MVP]
Oleg Starodumov
2005-04-27 11:14:05 UTC
Permalink
Post by qo_op
My guess is the PDB file somehow doesn't match with its DLL ? and the symbol
server doesn't have MFC70.PDB
Yes, it's possible.

Since you probably have Debugging Tools installed now, open the dump
in WinDbg and run the following commands in Command window:

!sym noisy
.reload /f mfc70.dll
!lmi mfc70.dll

It will allow to see the messages from the symbol engine while it is trying
to load symbols. What will be in the output?

Also you can try to get MFC70.PDB from the installation CD of VS.NET 2002.
Will it match the DLL?

Oleg
qo_op
2005-05-03 07:27:52 UTC
Permalink
Oleg,

Here is the listing from WinDbg:

0:000> .reload /f mfc70.dll
SYMSRV: f:\symbols\MFC70.DLL\41F05DCCfd000\MFC70.DLL not found
SYMSRV:
http://msdl.microsoft.com/download/symbols/MFC70.DLL/41F05DCCfd000/MFC70.DLL
not found
DBGHELP: C:\Program Files\Debugging Tools for Windows\MFC70.DLL - file not
found
DBGENG: C:\WINDOWS\System32\MFC70.DLL image header does not match memory
image header.
DBGENG: C:\WINDOWS\System32\MFC70.DLL - Couldn't map image from disk.
Unable to load image C:\WINDOWS\System32\MFC70.DLL, Win32 error 2
DBGENG: MFC70.DLL - Partial symbol image load missing image info
DBGHELP: No header for MFC70.DLL. Searching for dbg file
DBGHELP: .\MFC70.dbg - file not found
DBGHELP: .\symbols\DLL\MFC70.dbg - path not found
DBGHELP: .\DLL\MFC70.dbg - path not found
DBGHELP: MFC70.DLL missing debug info. Searching for pdb anyway
DBGHELP: Can't use symbol server for MFC70.pdb - no header information
available
DBGHELP: MFC70.pdb - file not found
*** WARNING: Unable to verify timestamp for MFC70.DLL
*** ERROR: Module load completed but symbols could not be loaded for
MFC70.DLL
DBGHELP: MFC70 - no symbols loaded
0:000> !lmi mfc70.dll
Loaded Module Info: [mfc70.dll]
Cannot read Image header @ 7c140000
Load Report: no symbols loaded
Oleg Starodumov
2005-05-03 08:14:33 UTC
Permalink
WinDbg output confirms that the problem is that the matching module (mfc70.dll itself)
cannot be found (and it is not available on the symbol server either).

So you need to find the matching mfc70.dll (that is, with exactly the same version
as the one in the dump - you can obtain the version number in Modules window
in VS.NET debugger, or with "lm v" command in WinDbg) and let the debugger
know where it is (using MODPATH in VS.NET, or image path setting in WinDbg)

Hopefully VS.NET 2002 CDs contain the version of mfc70.dll that you need.

Oleg
qo_op
2005-05-03 08:42:26 UTC
Permalink
Oleg,

The trouble is I am using the VS.NET SP1 MFC70.DLL which doesn't match up
with VS.NET SP1 MFC70.PDB. It just occured to me that maybe my copy of
VS.NET SP1 is corrupted somehow, I'll have to wait for the May 2005 MSDN CD.

Thanx for the help.
Oleg Starodumov
2005-05-03 09:37:04 UTC
Permalink
Post by qo_op
The trouble is I am using the VS.NET SP1 MFC70.DLL which doesn't match up
with VS.NET SP1 MFC70.PDB. It just occured to me that maybe my copy of
VS.NET SP1 is corrupted somehow, I'll have to wait for the May 2005 MSDN CD.
If you debug an MFC application locally, can the debugger load symbols
for mfc70.dll?

What is the version of mfc70.dll on your system and in the dump?

Oleg
qo_op
2005-05-04 00:30:40 UTC
Permalink
Locally, the debugger couldn't load the symbols either. The version of the
MFC70.DLL is 7.0.9955.0 ( locally and in dump )
Oleg Starodumov
2005-05-04 07:46:13 UTC
Permalink
Post by qo_op
Locally, the debugger couldn't load the symbols either. The version of the
MFC70.DLL is 7.0.9955.0 ( locally and in dump )
Yes, then it most likely means that your copy of mfc70.pdb is corrupted.
I will try to install VS.NET 2002 with SP1 and check it...

Oleg
qo_op
2005-05-04 08:03:02 UTC
Permalink
Oleg,

Thanx for the help. It is assuring when someone following through with your
queries.
Oleg Starodumov
2005-05-06 08:16:21 UTC
Permalink
VS.NET 2002 SP1's mfc70.dll and mfc70.pdb are definitely mismatched,
even in May 2005 MSDN package.

I have posted a question to MS, let's see what they will reply...

Oleg

Loading...