1) Which assemblies are currently available for symbol/source loading:
WPF (UIAutomation*.dll, System.Windows.DLL, System.Printing.DLL,
System.Speech.DLL, WindowsBase.DLL, WindowsFormsIntegration.DLL,
Presentation*.dll, some others)
2) When I choose "Load Symbols" I get an Open File dialog asking for the
This can be caused by one of four situations:
You didn't configure the symbol location URL properly from basic setup
above. Ensure it's
You chose a cache symbols directory that your user account doesn't have
write permissions for.
You attempted to Load Symbols for a DLL that's not available in the list
You have a different version of the .NET Framework on your machine - this
can happen, for example, if you're running a Windows Server 2008 Beta.
To check this, go to the Modules Window in Visual Studio (CTRL+ALT+U) and
ensure that the version number of your mscorlib.dll is 2.0.50727.1433, as
below. If not, make sure you install the RTM
Version of the .NET Framework 3.5.
Check your "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE" (or
wherever you installed VS) for a file called symsrv.no.
If that file exists, rename it to symsrv.yes, and restart
3) When I try to open or step into a source code file, I get a dialog that
says "Source is not available for this location" or I get an Open File dialog
for the file.
First, see FAQ item (2) above to ensure the symbols for the DLL were loaded
successfully. You can verify this by looking in the Modules Window under
the "Symbols Status" column.
If the Symbols Status is "Symbols loaded.", check the following.
If you have configured Microsoft
Symbol Server in the past, you may have already downloaded symbols for
this DLL that don't contain source information. Try specifying a
different cache path or deleting your existing cache path, and then repeating
the Load Symbols command. See FAQ #4 for more information on this.
Ensure you have checked the "Enable Source Server" item
on the Tools -> Options -> Debugging -> General page
Ensure that your account has read/write access to your cache path
4) I also use Microsoft
Symbol Server to download symbols. What's the difference? Can these
two programs co-exist?
Microsoft Symbol Server provides symbols without any source information in
them. That information has been removed (sometimes referred to as
"stripped") before publishing. The symbols provided on the Reference
Source Server are full symbols with debugging information.
The key to using both is to have your Reference Source path above the Symbol
Server Path so that those symbols are searched/found first. As described
in the ADVANCED USERS section above, you'll likely want to launch your debugger
once with this configuration to get all the symbols downloaded, then uncheck
both of these paths to avoid debugging launch slowdowns in the future.
Also note that this may conflict in the future as more DLLs are added to the
Reference Source Project. Meaning, if you've already downloaded the Symbol
Server symbol, you'll need to delete that or change your cache path to get the
Reference Source one (Visual Studio has no way of knowing which is which).
One final note here, if you have the Microsoft Symbol Server configured via
_NT_SYMBOL_PATH, you'll need to add the Reference Source path above to that path
as well - _NT_SYMBOL_PATH overrides the above settings.
5) Does this work with 64-bit?
Yes, we've also provided 64-bit versions of the PDBs. Note some DLLs
work on multiple architectures, so not all of them need a separate 64-bit
6) How do I set breakpoints in Framework code?
Visual Studio requires the code to exactly match what is expected by the
PDB. The source publishing process, however, makes some small updates to
the code, such as pushing a standard copyright banner to the end of the source
file. This changes the signature (CRC) of the code file. However,
it's still easy to set a breakpoint.
Just set your breakpoint as normal (you'll see it fails with a little warning
icon), then right click the breakpoint and choose "Location..."
Then check the "Allow Source to be Different" box, hit OK.
Now the breakpoint will set successfully.
If you find yourself doing this often, you can also disable source matching
in general by disabling Tools->Options->Debugging: “Require source files
to exactly match the original version.”
7) Why don't some features like "Go To Definition" work?
Browse database information is separate from symbol (PDB) information within
the debugger, so that information is maintained by the project system when a
project is compiled and is not present within the symbol files. So,
unfortunately, that ability is not available here.
8) Why are some member or local variables unavailable? Why can't I
step into certain functions or lines of code?
The .NET Framework bits that you have installed on your machine are “retail”
bits, which means they are optimized for size and performance. Part of
this optimization process removes certain information from the process when it
is no longer needed. Debugging retail assemblies reflects this.
However, most debugging information is still present in the session, and setting
breakpoints earlier in a function often allows it to be visible.
Another aspect of retail builds is that some small methods may be “inlined”
which means you will not be able to step into them or set breakpoints in
them. But for the most part you can step and debug as normal.
9) Why does it take so long to download some source files?
Some source files are very large - nearly 1MB - and unfortunately many of
these are the common ones to download. However, most are significantly
smaller and download quickly. Source files must be downloaded each time
you restart Visual Studio. They are not persistently cached like symbols
10) When I debug into VB code, for example in Microsoft.VisualBasic.dll,
there is a C# style comment at the bottom, is this a bug?
Not really - we do run a post processing step when publishing the code and it
adds a standard copyright banner at the bottom. The processor, at this
time, isn't able to support multiple comment formats. Having it in a
non-VB format doesn't affect the debugging functionality in any way.
11) I got to a source file and all that downloaded was a blank file?
This is something we've seen intermittently but have not been able to
diagnose. If you see this, usually the workaround is to just restart VS,
which will force the file to reload. If you observe this behavior, please
use the "Email" link on the left to email me the name of the file that failed
and about what time the failure occurred.
12) What happens if I download a Hotfix or a Service Pack? Will I be
able to get source for that?
We've built a system that allows us to publish any number of versions of
source and symbols for a given product. We haven't made any firm decisions
on how often we'll publish source and are open to customer feedback on those
issues. For example, it's clear that publishing source for each Service
Pack makes sense, but it's unclear if we'll be able to do so for each
Hotfix. Again, we're looking forward to feedback here.
In the meantime, also note that symbol files may no longer match a module if
a framework DLL has been updated via a Hotfix. In those cases, the modules
window will indicate that the symbols could not be downloaded for that module.
Assuming a new symbol file was published, it can be downloaded and cached using
13) Can I point a web browser at the symbols URL and download the symbols
No, you'll get an HTTP 400 (Bad Request) response.
14) Visual Studio does not debug framework code after installing the download setup.
a. Launch Visual Studio 2008.
b. From the Tools menu, choose Options.
c. In the Options dialog box, open the Debugging node and select Symbols under Debugging.
e. Click the OK button.
If you have any other questions, please visit our new MSDN Forum on the
Source Server Discussion.