Search code examples
windowsdbghelp

Unable to get Windows symbols from the public symbols server using an x64 application


I am trying to use DbgHelp to find the address of some symbols. I want to be able to use the symbols available on Microsoft's public server. I have the search path set with SymSetSearchPath as "cache*C:\\symbols\\;srv*http://msdl.microsoft.com/download/symbols/". With the path set like this, calling SymFromName will result in an ERROR_MOD_NOT_FOUND [126] error.

I have both symsrv.dll and symsrv.ini in the same directory as dbghelp.dll.

No network connection seems to happen while monitoring the program with ProcMon.

Using a previously populated SymSrv local folder works, for example, "cache*C:\\symbols\\;srv*C:\\symsrv\\".

Any suggestions?


Solution

  • It turns out the answer to my question was already posted at ERROR_WINHTTP_NAME_NOT_RESOLVED when using dbghelp as a service. I was trying to run my code as SYSTEM, and for that, I was using psexec. Using dbghelp.dll version 6.3.9600.16384 and symsrv.dll version 6.3.9600.17298 with the DBGHELP_WININET set to 1 fixed the problem.