问题
I have Visual Studio 2005 set up to use Microsoft's symbol servers. I also have UltraMon installed, which injects a hook DLL into every process. Whenever I start debugging my MFC application, Visual Studio says:
"Loading symbols for C:\Program Files\UltraMon\RTSUltraMonHookX32.dll..."
for anything from the blink of an eye to several tens of seconds. It's never going to find those symbols... Can I tell it not to bother looking?
(I tried creating an empty RTSUltraMonHookX32.pdb
file, but Visual Studio sees that it's not good and carries on looking.)
回答1:
You can't do this in a very fine grained fashion but you can disable automatic symbol loading and then manually choose the symbols to load via the Modules window (Debug -> Windows -> Modules).
To Disable Automatic Symbol loading
- Tools -> Options -> Debugging -> Symbols
- Check "Search the above locations only when symbols are loaded manually"
回答2:
Also check that you have no "_NT_SYMBOL_PATH" environment variable. If you have this var symbols will load regardless of VS settings.
回答3:
From Visual Studio 2010 onwards, you can go to:
Tools -> Options -> Debugging -> Symbols -> Specify excluded modules
and enter the list of the dlls which take too long to load. I use the full path, given by the Output Window; maybe it accepts wildcards or simple file names.
回答4:
In my case it was because I had set "Enable .Net Source Stepping" to true in
Tools > Options > Debugging > General.
Rather than setting it to false, I set "Enable Just My Code" to true which automatically set "Enable .Net Source Stepping" to false. It gave me a warning before doing so:
Enabling Just my code automatically disabled .Net framework source stepping
Which suggests Just My Code
and .Net source stepping
are mutually exclusive.
I hope this helps someone.
回答5:
You can also set up symbol server exclusions which will not be attempted to download in HKEY_CURRENT_USER\Software\Microsoft\Symbol Server\Exclusions or possibly also HKEY_LOCAL_MACHINE\Software\Microsoft\Symbol Server\Exclusions or via a .ini file at %WINDIR%\system32\inetsrv\Symsrv.ini (use the header [exclusions] and put each exclusion on its own line). The exclusions are simple pattern matches, so use msxml5.* for example.
回答6:
Not only the _NT_SYMBOL_PATH
can cause this behavior, but for me it was the _NT_ALT_SYMBOL_PATH
environment variable that was causing the delays.
(I believe I added this variable when experimenting with WinDbg)
回答7:
In Visual Studio 2013 Pro, if the Microsoft Symbol Server is checked, VS will attempt to load all symbols on their server, causing a lot of extra time.
回答8:
- Load all symbol packages from MS website manually, put them on a SSD drive for speed :-)
- If you have a "_NT_SYMBOL_PATH" environment variable, remove the part "http://msdl.microsoft.com/download/symbols" from "SRVe:\symbols*http://msdl.microsoft.com/download/symbols", so you have only the symbol path where your symbols live preciously downloaded.
- Now you have support for symbols but they wont be downloaded from MS, but loaded from drive
来源:https://stackoverflow.com/questions/869168/prevent-visual-studio-from-trying-to-load-symbols-for-a-particular-dll