Advanced Search
Welcome to Omgili,
Omgili (Oh My God I Love It ;) is a search engine for discussions. With Omgili you can find answers and solutions, debates, discussions, personal experiences, opinions and more... To learn more about Omgili click here.

This is a complete preview of the discussion as it was indexed by Omgili crawlers. Use this preview if the original discussion is unavailable.
Click here to view the original discussion.

windbg private symbols

I'm having some difficulty debugging a crash dump for my driver.

I have set my symbol file path, and executing "lm v m MyModule" in windbg shows that my module's private symbols are there: "f7677000 f7687000   MyModule     (private pdb symbols)  y:\MyModule.pdb     Loaded symbol image file: MyModule.sys     Image path: \SystemRoot\system32\DRIVERS\MyModule.sys     Image name: MyModule.sys     Timestamp: Tue May 12 10:09:38 2009 (4A09AD52)     CheckSum: 00011654     ImageSize: 00010000     Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4 " However, when I attempt to execute the dv command, I get the following: "Unable to enumerate locals, HRESULT 0x80004005 Private symbols (symbols.pri) are required for locals." The debugger is able to point to the offending line in my source code, but I can't get it to show me the value of the parameters to the function being called (both params are local variables).

I'm sure I've missed some detail about my symbol setup or something like that, but I'm new to windbg, so I don't know what I'm missing. Any information would be appreciated.

You may actually have the public symbols for your driver loaded (rather than the private symbols) - i.e.

The first thing I'd check would if the debugger is correct. http://msdn.microsoft.com/en-us/library/cc267329.aspx  has more info on this error.

Thanks for the reply Alan.

I thought that "(private pdb symbols)" indicated that I had the private symbols, but apparently not. After much reading , I think I'm starting to understand the process, but could use some clarification... My project is a device driver, and we're using the WDK Build Utility to compile it.

We are creating a "free" build, which means that the NTDEBUG environment variable is set to ntsdnodbg.

If what I've read is correct, all this does is define DBG=0, which, according to further research, should NOT prevent private symbols from being built.

Is this correct, or are the sources I found wrong? If you could point me to any resources that can show me how to compile a release build with full symbols, I would be grateful.

There's some vague information here: http://msdn.microsoft.com/en-us/library/cc501184.aspx The full answer is probably buried in the WDK's makefile.def, but you can either build full debug, or grep makefile.def to figure out how to bypass stripping symbols on the free builds.

Thanks again for the help Alan.

According to the link you posted: "If you build your binaries with the Build utility, the utility will create full symbol files." So, I should have the private information, but the debugger doesn't see them.

I'm currently fiddling aroung with source indexing to ensure that whatever PDBs I create are able to access the correct source.

Perhaps not indexing the files I'm currently debugging has contributed to the issue. I'll look at makefile.def too, to see if it helps.

Ok - keep me posted.

Sorry I don't have the wdk installed to take a look at what happens (I did work on ddk stuff many years ago, so I know generally what happens - just no details).

Discussion Title: windbg private symbols
Title Keywords: windbg  private  symbols