Discussion:
How do I check that PDB match against a DLL ?
(too old to reply)
f***@laposte.net
2007-09-25 15:05:09 UTC
Permalink
Hi all,

I know there are several reasons why the debugger can not associate a
DLL with a PDB.
As far as I am concerned, I use a third party DLL and the third party
company guarantee that the provided PDB is matching it.
In facts, it does not work on my PC : all the other PDB are matched
(my own DLL and even the system DLL are fine : symbols are loaded)
I double-checked all my paths (symbol path, image path etc ...), ran
my exe under VC71, under WinDbg but the result is always the same : I
get the "No symbols loaded" message.

Unmatched DLL/PDB produce this error but I also know that an invalid
path produce the same result.

I tried running Filemon (from Winternals) at the same time I launched
my application and the debugger does not even try to load the
associated PDB.

I am going to open a call to the third party company but before doing
it (this is quite a big company and they are very long to answer), I
would like to know if there is a tool that can tell for sure if the
DLL match the PDB or not ?

Thanks in advance for your help.
Mike Terry
2007-09-25 18:45:31 UTC
Permalink
Post by f***@laposte.net
Hi all,
I know there are several reasons why the debugger can not associate a
DLL with a PDB.
As far as I am concerned, I use a third party DLL and the third party
company guarantee that the provided PDB is matching it.
In facts, it does not work on my PC : all the other PDB are matched
(my own DLL and even the system DLL are fine : symbols are loaded)
I double-checked all my paths (symbol path, image path etc ...), ran
my exe under VC71, under WinDbg but the result is always the same : I
get the "No symbols loaded" message.
Unmatched DLL/PDB produce this error but I also know that an invalid
path produce the same result.
I tried running Filemon (from Winternals) at the same time I launched
my application and the debugger does not even try to load the
associated PDB.
I am going to open a call to the third party company but before doing
it (this is quite a big company and they are very long to answer), I
would like to know if there is a tool that can tell for sure if the
DLL match the PDB or not ?
Well if the debugger does not even open the PDB file, it hardly matters
whether it matches the .exe or not! :-)

So probably you need to sort out your symbol search path...

But to answer your question about checking whether it matches the .exe, you
could use windbg and turn on symbol diagnostic messages, then reload your
symbols:

!sym noisy
.reload -f your.dll

the output shows which PDB file locations are being tried, and there will be
a warning if there is a mismatch between PDB and EXE.

Mike.
Post by f***@laposte.net
Thanks in advance for your help.
f***@laposte.net
2007-09-26 06:21:00 UTC
Permalink
On 25 sep, 20:45, "Mike Terry"
Post by Mike Terry
Post by f***@laposte.net
Hi all,
I know there are several reasons why the debugger can not associate a
DLL with a PDB.
As far as I am concerned, I use a third party DLL and the third party
company guarantee that the provided PDB is matching it.
In facts, it does not work on my PC : all the other PDB are matched
(my own DLL and even the system DLL are fine : symbols are loaded)
I double-checked all my paths (symbol path, image path etc ...), ran
my exe under VC71, under WinDbg but the result is always the same : I
get the "No symbols loaded" message.
Unmatched DLL/PDB produce this error but I also know that an invalid
path produce the same result.
I tried running Filemon (from Winternals) at the same time I launched
my application and the debugger does not even try to load the
associated PDB.
I am going to open a call to the third party company but before doing
it (this is quite a big company and they are very long to answer), I
would like to know if there is a tool that can tell for sure if the
DLL match the PDB or not ?
Well if the debugger does not even open the PDB file, it hardly matters
whether it matches the .exe or not! :-)
So probably you need to sort out your symbol search path...
But to answer your question about checking whether it matches the .exe, you
could use windbg and turn on symbol diagnostic messages, then reload your
!sym noisy
.reload -f your.dll
the output shows which PDB file locations are being tried, and there will be
a warning if there is a mismatch between PDB and EXE.
Thanks a lot for your help.
The message is now clear : WinDbg tells me that the DLL and PDB are
unmatched.
I have to contact the company.

DBGHELP: myDll - public symbols
C:\Data\myDll.pdb - unmatched
Unable to add module at 00000000

Loading...