Запретить Visual Studio пытаться загружать символы для определенной библиотеки DLL


У меня есть Visual Studio 2005, настроенный для использования серверов символов Microsoft. У меня тоже есть UltraMon установлен, который вводит DLL крюк в каждый процесс. Всякий раз, когда я начинаю отлаживать мой MFC приложение, Visual Studio говорит:

"Loading symbols for C:Program FilesUltraMonRTSUltraMonHookX32.dll..."

для чего угодно от мгновения ока до нескольких десятков секунд. Он никогда не найдет эти символы... Могу я сказать ему, чтобы он не утруждал себя поисками?

(Я попытался создать пустой RTSUltraMonHookX32.pdb файл, но визуальный Студия видит, что это не хорошо и продолжает искать.)

8 55

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, но загружается с диска