Запретить Visual Studio пытаться загружать символы для определенной библиотеки DLL
У меня есть Visual Studio 2005, настроенный для использования серверов символов Microsoft. У меня тоже есть UltraMon установлен, который вводит DLL крюк в каждый процесс. Всякий раз, когда я начинаю отлаживать мой MFC приложение, Visual Studio говорит:
"Loading symbols for C:Program FilesUltraMonRTSUltraMonHookX32.dll..."
для чего угодно от мгновения ока до нескольких десятков секунд. Он никогда не найдет эти символы... Могу я сказать ему, чтобы он не утруждал себя поисками?
(Я попытался создать пустой RTSUltraMonHookX32.pdb
файл, но визуальный Студия видит, что это не хорошо и продолжает искать.)
8 ответов:
вы не можете сделать это очень мелкозернистым способом, но вы можете отключить автоматическую загрузку символов, а затем вручную выбрать символы для загрузки через окно модулей (Debug -> Windows -> Modules).
отключить автоматическую загрузку символов
- Инструменты - > Параметры - > Отладка - > Символы
- установите флажок "искать указанные выше места только при загрузке символов вручную"
также проверьте, что у вас нет переменной среды" _NT_SYMBOL_PATH". Если у вас есть этот var символы будут загружаться независимо от настроек VS.
начиная с Visual Studio 2010, Вы можете перейти к:
Tools -> Options -> Debugging -> Symbols -> Specify excluded modules
и введите список DLL, которые занимают слишком много времени для загрузки. Я использую полный путь, заданный окном вывода; возможно, он принимает подстановочные знаки или простые имена файлов.
в моем случае это было потому что я установил "Enable .Net Source Stepping" в true на
Tools > Options > Debugging > General.
вместо того, чтобы устанавливать его в false, я установил "включить только мой код" в true, который автоматически устанавливает "включить исходный шаг .Net" в false. Он дал мне предупреждение, прежде чем сделать это:
Enabling Just my code automatically disabled .Net framework source stepping
что свидетельствует о
Just My Code
и.Net source stepping
are взаимоисключающие.Я надеюсь, что это поможет кому-то.
вы также можете настроить исключения сервера символов, которые не будут пытаться загрузить в HKEY_CURRENT_USER\Software\Microsoft\Symbol Server\Exclusions или, возможно, также HKEY_LOCAL_MACHINE\Software\Microsoft\Symbol Server\Exclusions или через a .ini-файл в %WINDIR%\system32\inetsrv\Symsrv.ini (используйте заголовок [исключения] и поместите каждое исключение в свою собственную строку). Исключения-это простые совпадения шаблонов, поэтому используйте msxml5.* например.
не только
_NT_SYMBOL_PATH
может вызвать такое поведение, но для меня это был_NT_ALT_SYMBOL_PATH
переменная окружения, которая вызывала задержки.(Я считаю, что я добавил эту переменную при экспериментировании с WinDbg)
в Visual Studio 2013 Pro, если установлен флажок Microsoft Symbol Server, VS попытается загрузить все символы на свой сервер, что вызовет много дополнительного времени.
- Загрузите все пакеты символов с веб-сайта MS вручную, поместите их на SSD-диск для скорости : -)
- если у вас есть переменная среды" _NT_SYMBOL_PATH", удалите деталь "http://msdl.microsoft.com/download/symbols " от " SRVe:\symbols*http://msdl.microsoft.com/download/symbols", таким образом, у вас есть только путь символа, где ваши символы живут драгоценно загружены.
- теперь у вас есть поддержка символы, но они не будут загрузить из MS, но загружается с диска