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

StackOverflow https://stackoverflow.com/questions/869168

Вопрос

У меня установлена ​​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, а загружаются с диска.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top