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