Resharper 8.1 ignoring symbol server and symbol cache

I am unable to navigate to external sources on my symbol server. I can navigate to MS symbols just fine. I'm using resharper 8.1 and visual studio 2013.

Visual studio is navigating to my external sources on the symbol server during debugging, and I see the pdbs in my symbol cache. It seems to be trying to download symbols from srv.symbolsource.org

Here's the resharper output:

PdbNavigator: Downloader: http://srv.symbolsource.org/pdb/Public/managedinvestment.pdb/FBADD23BDB934FC290A4018D486DD526/managedinvestment.pd_ -> The remote server returned an error: (404) Not Found.
PdbNavigator: Downloader: http://srv.symbolsource.org/pdb/Public/managedinvestment.pdb/FBADD23BDB934FC290A4018D486DD526/managedinvestment.pdb -> The remote server returned an error: (404) Not Found.
PdbNavigator: No debugging information found on symbol servers for managedinvestment, Version=1.37882.14.207, Culture=neutral, PublicKeyToken=null

Here's the relevant support logs:

CacheDirectory: C:\Users\me\AppData\Local\Temp\ReSharper.TempCache.Solution.Mopawip\Decompiler

--- ExternalSourcesDebugInfoVsDebugger ---
GetSymbolPath::SymbolPath =
GetSymbolPath::SymbolCachePath = e:\symbols

--- NtSymbolPathSymbolsCache ---
env._NT_SYMBOL_PATH = SRV*e:\symbols*\\symserver\symbols\Symbols_server*http://msdl.microsoft.com/download/symbols

--- SymbolSourceSymbolsCache ---
CacheDir: C:\Users\ggreer\AppData\Local\SymbolSourceSymbols

5 comments
Comment actions Permalink

This seems to be due to the way that ReSharper handles the _NT_SYMBOL_PATH envrionment variable. It doesn't allow for an arbitrary number of symbol sources/caches. Instead it supports:

  • a single remote or local path
  • srv*(remote|local) or cache*(remote|local) or local*remote
  • srv*local*remote or symsrv*dll*path (dll is ignored)
  • symsrv*dll*local*remote (dll is ignored)


Where "remote" is an http or unc path and local is a path that can be used as a read/write cache.

Having a look around the web, I can't see a definitive format for the _NT_SYMBOL_PATH variable, but all the examples I see follow this format that ReShaprer's handling (e.g. http://stackoverflow.com/questions/967043/nt-symbol-path-format). Since your format doesn't meet any of these, it's being ignored. However, the format of the environment variable also allows for multiple values to be set, separated by semi-colons, and ReSharper will handle this, too. So you could change your environment variable to "SRV*e:\symbols*\\symserver\symbols\Symbols;SRV*e:\symbols*http://msdl.microsoft.com/symbols" and it should work.

An alternative is to add your symbol server to Visual Studio's list of symbols servers in the options, and ReSharper will pick that up and use it. I believe it will use the cache specified in the VS options as well, and if this isn't set, it will fallback to %LOCALAPPDATA%\Symbols.

As for the messages you see for srv.symbolsource.org - ReSharper will use this site to find published sources. It will always check here, so you'll always see the message. ReSharper also checks Microsoft's reference source server, but only for Microsoft assemblies, so you'll sometimes see messages for that too.

Finally, there is a potential bug here, the first time you download the pdb. It seems to be that ReSharper (as of 8.1, and the current 8.2.0.441 EAP build) doesn't see the pdb in the cache when the project is first opened, or when the project's caches have just been cleared. So, it downloads the pdb (again) and then fails to process it, and displays a decompiled version of the code rather than the source. When you close and reopen the project, the issue seems to go away, and ReSharper will happily use the cache again and find and display source. I've reported the issue here: http://youtrack.jetbrains.com/issue/RSRP-406276

The log information you posted a snippet of is actually really informative, if a little daunting, and it shows all the cache and provider locations that ReSharper will check. It also shows the pdbs it knows about (and whether they have source server information) and the mapping from symbol to source information in them.

0
Comment actions Permalink

Yeah, I figured out my _NT_SYMBOL_PATH was totally wrong.

Closing an reopening the project doesn't fix the cache issue for me unfortunatly. There also seems to be bug when downloading symbols from remote symbol shares that require authentication.

0
Comment actions Permalink

So it's not working even with a correctly formatted _NT_SYMBOL_PATH?

0
Comment actions Permalink

Yup, still not working.

0
Comment actions Permalink

Could you post me the log file from ReSharper -> Options -> External Sources -> Show support information, please? And the symbol that you're trying to navigate to (the log file should contain a list of symbols from the pdbs it knows about, so we should be able to check if its at least possible). If you're not happy posting that to the forum - it contains symbols from your referenced assemblies, and paths - then you can post it to me at matt.ellis@jetbrains.com.

One thing to note is that not all symbols are defined in a pdb file - notably interfaces aren't supported. So try with something obvious, such as a class name, and try with a couple of examples (I encountered an issue with a 3rd party pdb where one attribute wasn't included in the pdb, but other attributes were. Haven't figured out why yet).

0

Please sign in to leave a comment.