The MASM Forum

Miscellaneous => The Orphanage => Topic started by: Magnum on December 28, 2012, 11:17:16 AM

Title: Can not find symbols
Post by: Magnum on December 28, 2012, 11:17:16 AM
I can't figure out why it can't find the symbol file.

Does anyone know how to fix this problem in Windbg ?

\\*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -

Thanks.

CommandLine: C:\masm32\SOURCE\excep.exe
Symbol search path is: srv*C:\WINDOWS\Symbols*
Executable search path is:
ModLoad: 00400000 00403000 image00400000
0:000> .reload
Reloading current modules
.
0:000> .reload
Reloading current modules

*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
Title: Re: Can not find symbols
Post by: japheth on December 28, 2012, 11:07:14 PM
The MS debug engine ( which is used by WinDbg ) stops very early in NTDLL.DLL ( before any dll initialization routines have been called ). It wants to load the symbols of NTDLL.DLL - which usually aren't there and, more importantly, are only needed in very few cases.

The symbol file ( which is MS debug engine terminology for the linker-generated .PDB file ) for your application most likely is not the problem here. Enter "lm" in the WinDbg command line and it will tell you if the .PDB file for your application has been found:


*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll -
ntdll!DbgBreakPoint:
7c90120e cc              int     3
0:000> lm
start    end        module name
00400000 00407000   win32tls C (private pdb symbols)  win32tls.pdb
77c10000 77c68000   MSVCRT     (deferred)             
7c800000 7c8f6000   kernel32   (deferred)             
7c900000 7c9b2000   ntdll      (export symbols)       D:\WINDOWS\system32\ntdll.dll


As you can - perhaps - see, I also get this error msg, but the win32tls.pdb file has been found and everything is ok.
Title: Re: Can not find symbols
Post by: Magnum on December 30, 2012, 03:54:38 AM
This is what I got.
I compiled the open program with debug info.

Andy

0:000> lm
start    end        module name
00400000 00404000   image00400000   (deferred)             
77f10000 77f59000   GDI32      (deferred)             
7c800000 7c8f6000   kernel32   (deferred)             
7c900000 7c9b2000   ntdll      (pdb symbols)          c:\symbols\ntdll.pdb\CEFC0863B1F84130A11E0F54180CD21A2\ntdll.pdb
7e410000 7e4a1000   user32     (deferred)             
Title: Re: Can not find symbols
Post by: japheth on December 30, 2012, 05:05:08 AM
Quote from: Magnum on December 30, 2012, 03:54:38 AM
I compiled the open program with debug info.

Good. If you did everything right ( that is: not just told the assembler, but also the linker to generate debug info ), then your linker will have created a symbol file image00400000.pdb ( which is kinda strange name - do you always give your self-written apps such names? ).

If you have located it, just enter "ld image00400000" and WinDbg will load your symbol file.

If you cannot find the symbol file for your application, you either forgot to tell the linker to create one or the assembler and the linker you're using are not quite compatible as far as debug info is concerned.
Title: Re: Can not find symbols
Post by: Magnum on December 30, 2012, 06:19:25 AM
0:000> ld image00400000
*** WARNING: Unable to verify checksum for image00400000
*** ERROR: Module load completed but symbols could not be loaded for image00400000
Symbols loaded for image00400000

I assembled program with debug info from both ml and link.


Title: Re: Can not find symbols
Post by: japheth on December 30, 2012, 09:50:04 PM
Quote from: Magnum on December 30, 2012, 06:19:25 AM
I assembled program with debug info from both ml and link.

Fine.