Было задано много вопросов об этом, и многие ответы были предложены, но ничего не работало для меня.

Работал отлично, все круто и что.

Кроме проектов Silverlight, он также попытается загрузить символы с этого сервера, но их не было, поэтому время запуска для отладки проекта было огромным.

Итак, я отключил загрузку символов, и он прекратил попытки загрузить все символы, за исключением одного пространства имен: System.Windows.Browser. VS все еще пытается загрузить их с каждым F5, занимая несколько секунд и сводя меня с ума.

Подумав, что, может быть, символы были там, они загрузились и были кэшированы, и все будет хорошо. Но нет, они не только не загружаются, но VS пытается загрузить символы для каждой другой DLL в моем проекте, в том числе те, для которых символы никогда не были доступны, что заставляет занять еще больше времени.

Честно говоря, мне даже не нужно отлаживать источники этих DLL, я просто подумал, что это будет круто. Теперь я не могу отключить его, и это заставляет меня затихать. Какое исправление?

Инструменты → Параметры → Отладка → Символы → Проверить "Поиск в указанных местах только при загрузке символов вручную" или удалить все из списка.

Если вы установите флажок, вы можете rclick → Загрузить символы в библиотеках DLL в окне Modules/Stack.

Я думаю, что у вас может быть

определенных в вашей среде. Это похоже на то, что вы делаете в Tools- > Options- > Debugging- > Symbols. У меня была одна и та же проблема, и это почти заставило меня бананы, но в момент творчества я направил procmon (из sysinternals) на devenv.exe и обыскал журнал для "символа", и первое, что появляется, это то, что указанная переменная среды выше. Могут быть и другие подобные зловещие боковые каналы тоже, но я не удивлюсь, если вы сможете избежать этих проблем с помощью маленькой помощи.

Я подозреваю, что это происходит из-за того, что symsrv.dll, который загружает символы, используется с другими инструментами, и есть разные способы сигнализировать о том, что символы должны быть загружены и. ну, я думаю, это идет к учетная запись "дерьмо-бывает".

На боковой ноте — это может быть очень плохо для вас, если у вас есть код с использованием wininet-функций, таких как HttpSendRequest(). Он быстро закроет визуальную студию и все экземпляры интернет-exploder. Добавьте к этому значению загрузку, которая не позволяет выключить себя. Вы можете себе представить, какой был день, который у меня был до сих пор.

132 arnoldino [2010-07-31 13:34:00]

Сейчас я работаю над проектом ColdFusion, и Visual Studio по-прежнему ведет себя странно для меня.

Я заметил, что, когда я начал отлаживать, он построил проект, запустил развертывание и завершил развертывание, и он начал загружать символы для моего проекта.

Но это было очень медленно, и я не знаю, почему он начал делать этот шаг. Что я могу сделать?

Необходим ли этот шаг загрузки символа? Как отключить его?

В диалоговом окне Инструменты → Параметры → Отладка → Символы не добавлено местоположение файла символа (.pdb). И я указал в моем каталоге отладки проекта в поле ниже, и я установил флажок "Поиск в приведенной директории только тогда, когда символы. ". Как настроить это диалоговое окно, чтобы отключить загрузку символов?

Я посмотрел в окне Модулей, какие символы загружены, но он ничего не говорит мне. В чем проблема?

debugging visual-studio debug-symbols

12 ответов

235 peterfoldi [2010-09-21 14:35:00]

Отладка → Удалить все точки останова (http://darrinbishop.com/blog/2010/06/sharepoint-2010-hangs-after-visual-studio-2010-f5-debugging) После этого вы можете использовать их снова, но сделайте это один раз. Он также удалит какие-то "недействительные" точки останова, а затем загрузка символов снова будет быстрой. Я преследовал эту проблему в течение нескольких дней: (.

93 nietras [2011-02-14 15:43:00]

Еще одна причина медленной загрузки — отключить "Включить только мой код" в параметрах "Отладка". Чтобы включить это, перейдите к:

Убедитесь, что это отмечено.

36 Rup [2010-07-31 13:57:00]

Настроить в Инструменты, Параметры, Отладка, Символы.

Вы можете посмотреть окно вывода (просмотр, вывод), чтобы увидеть, что он обычно делает. Если это действительно медленное, это, вероятно, означает, что он поражает сервер символов, возможно, Microsoft, для загрузки отсутствующих символов. Это занимает три HTTP-обращения для каждого файла, который он не может найти при каждом запуске. Иногда вы можете видеть это в строке состояния внизу или, например, Скрипач. Вы можете видеть, какие модули загружали символы в Debug, Windows, Modules во время отладки.

Символы означают, что вы получаете полезную информацию о трассировке стека в сторонние и системные сборки. Вы определенно нуждаетесь в них для своего собственного кода, но я думаю, что они загружаются независимо. Лучше всего отключить источники нелокальных символов в этом меню, и если вы загружаете большое количество символов для системных сборок, которые вам не нужно отлаживать, вы можете временно отключить загрузку этих файлов, чтобы ускорить запуск отладки — но они часто полезны для загрузки.

26 JohnMcC [2013-07-15 13:12:00]

Просто эта проблема.

Я установил его, переместившись на:

ИнструментыПараметрыОтладкаСимволы

Затем снимите флажок для всех нелокальных источников для местоположений Symbol file (.pdb)

например. Серверы Microsoft Symbol и msdl.microsoft.com/download/symbols

21 jcarle [2011-02-14 16:07:00]

У меня возникла аналогичная проблема. В моем случае я установил _NT_SYMBOL_PATH для загрузки с Microsoft Servers для использования в WinDbg, и похоже, что при установке Visual Studio будет использовать это, чтобы не игнорировать его. Удаление этой переменной среды разрешило мою проблему.

6 Cameron [2012-11-01 22:43:00]

Для меня это похоже на точки останова, как указано в принятом ответе. Однако я нашел два обходных пути, которые не включали удаление всех точек останова:

  • Перезапуск Visual Studio, похоже, временно исправил его.
  • Нажатие кнопки "X" для закрытия Visual Studio при отладке вызывает "Вы хотите прекратить отладку?". окно сообщения; в то время как это окно сообщения вверх, символы загружаются с обычной скоростью. После того, как все символы загружены, вы можете нажать "Нет", чтобы отменить закрытие.

3 SteveL [2013-01-29 19:11:00]

Только что столкнулся с этой проблемой. Удаление точек останова не сработало или, по крайней мере, не просто само по себе. После этого я потерял инструменты > Параметры > Отладкa > Символы и "Пустой символ символа"

а затем очистил решение и перестроил.

Теперь, похоже, работает правильно. Поэтому, если вы попробуете все перечисленные другие вещи, и это по-прежнему не имеет никакого значения, эти дополнительные бит информации могут помочь.

У меня была такая же проблема, и даже после выключения символа загрузка модуля в Visual Studio была ужасно медленной.

Решение заключалось в том, чтобы отключить антивирусное программное обеспечение (в моем случае NOD32) или еще лучше, добавить исключения к нему, чтобы он игнорировал пути, из которых ваш процесс загружает сборки (в моем случае это папка GAC и временные папки ASP.NET).

2 Mike [2013-07-04 00:20:00]

В моем случае Visual Studio искала сторонние PDB по путям, которые на моей машине ссылаются на оптический диск. Без диска в лотке для Windows потребовалось около

30, что, в свою очередь, замедлило работу с Visual Studio, когда он пытался загрузить PDB из этого места. Более подробная информация приведена в моем полном ответе здесь: qaru.site/questions/18036/.

У меня была аналогичная проблема, пытаясь получить отчет о диагностике (Visual Studio 2013) в режиме выпуска x64 (выборка процессора), и когда были загружены символы для необходимых файлов DLL, символы для моего исполняемого файла не смогли загрузить,

Я ничего не менял в меню "Символы", вместо этого внес изменения в страницы свойств моего исполняемого потока в обозревателе решений, а именно

Свойства конфигурации/Общие/Включить управляемый инкрементный Build to YES

Свойства конфигурации/Отладка/Слияние среды с NO

Свойства конфигурации/C/С++/Включить просмотр информации в YES (/FR)

Свойства конфигурации/компоновщик/Включить инкрементное связывание с YES (/INCREMENTAL)

EDIT: этот последний делает трюк

Свойства конфигурации/компоновщик/отладка/ Генерация информации отладки до да (/DEBUG)

После этого он работал, и он отлично загрузил символы. Я уверен, что один или несколько из вышеперечисленных помогло (хотя я точно не знаю), и просто хочу сообщить другим и попробовать это.

1 H’H [2016-10-11 10:48:00]

с приведенным выше ссылкой, я нашел это решение, которое представляет собой как-то сводку вышеприведенных ответов.

Также попытайтесь удалить все точки останова (Debug > Delete all the breakpoints),

Попробуйте щелкнуть правой кнопкой мыши на одной из точек останова, а затем выбрать "Местоположение". Затем установите флажок "Разрешить исходный код отличается от исходной версии"

Пакет обновления 1 для Visual Studio 2012 содержит улучшения отладчика, связанные с загрузкой символов и исходного кода. Эти улучшения можно разделить на четыре категории:

  • Улучшения производительности.
  • Целевая страница No Source (Нет источника).
  • Контекстное меню загрузки символов.
  • Диалоговое окно выбора исходного символа.

Заметного увеличения производительности удалось достичь за счет:

  • Агрессивного кэширования символов.
  • Улучшения алгоритма распознавания ошибочных путей к символам (теперь эта процедура занимает меньше времени).

Ранее из-за ошибки в пути к символам возникала задержка не менее 30 секунд, прежде чем истекало время ожидания запроса. Сейчас отладчик настроен так, чтобы выявлять причины длительных и ненужных задержек при загрузке символов: недоступность сервера символов, неверный путь к кэшу, неверное расположение сервера символов и т. п. Улучшения позволили сократить до нескольких секунд время ожидания запроса, в течение которого отладчик выбирает вариант обработки ошибочной ситуации. Время между выявлением ошибки и окончанием периода ожидания запроса сократилось в среднем с 30 до 3 секунд.

Если в процессе отладки недоступен исходный файл на локальном диске или отсутствует необходимый двоичный файл, то отладка прекращается и браузер перенаправляет пользователя на страницу No Symbols Loaded (Символы не загружены). Ранее функциональность этой страницы была ограничена: было непонятно, почему она открылась, поскольку на ней отображался только исходный код. В настоящее время существует 10 причин появления этой страницы.

  1. Двоичный файл не загружен (отладка прекращена).
  2. Символ не загружен.
  3. Символ не загружен, поскольку отсутствует в списке подключенных модулей.
  4. Символ не загружен, поскольку имеется в списке отключенных модулей.
  5. Пропущена загрузка символов для оптимизированных модулей в режиме Just My Code (Только мой код).
  6. Источник не найден либо тип источника не совпадает.
  7. Источник недоступен в файле .pdb (например, файлы символов, взятые с общедоступного сервера символов, неполные).
  8. Остановка во внешнем программном коде (должен быть включен режим Just My Code).
  9. Программный код не выполняется (отдельные вспомогательные потоки работают, но код не выполняется). При отладке jscript это означает, что потоком не выполняется код jscript.
  10. При просмотре потока в файле журнала IntelliTrace обнаруживается, что символ не загружен.

Установив пакет обновлений 1 для Visual Studio 2012, разработчик замечает значительное сокращение времени, необходимого для перенаправления на страницу Symbol not loaded (Символы не загружены). Это связано с тем, что быстрее определяются и отбрасываются ошибочные пути к символам. На этой странице приведены причины ошибки при загрузке источника. Кроме того, улучшен внешний вид страницы, добавлены средства прямого поиска файлов pdb, отображаются дополнительные сведения о необходимых отладчику файлах. Теперь для просмотра и изменения параметров не нужно последовательно открывать меню Tools (Инструменты) ->Options (Настройки)->Debugger (Отладчик)->Symbols page (Страница символов).

Рисунок 1. Снимок экрана показывает ожидаемый режим работы программы, если в коде возникает исключение из-за того, что не настроен путь к символам

Ранее в контекстном меню, связанном с символами, размещалось около девяти элементов. С выходом обновления 1 для Visual Studio 2012 их количество сократилось до четырех. Теперь меню стало менее запутанным, что позволило упростить работу пользователей.

Рисунок 2. Старое контекстное меню

Рисунок 3. Новое контекстное меню

Если настроить параметр Enable source server support (Включить поддержку исходного сервера) и начать отладку, то система безопасности Visual Studio предупредит о том, что предпринята попытка загрузить исходный код из TFS.

Рисунок 4. Включение поддержки исходного сервера в меню Tools->Options->Debugging (Инструменты->Параметры->Отладка)

Ранее в диалоговом окне системы безопасности были доступны только два варианта: отмена запуска и разрешение на запуск. Пользователи отправили нам множество отзывов с просьбой отключить диалоговое окно системы безопасности Visual Studio при обращении к исходному серверу (и заодно предложили обходной путь для решения этой проблемы). С выпуском обновления 1 для Visual Studio 2012 в это диалоговое окно были добавлены дополнительные варианты; теперь пользователи могут указать нужное действие и сделать его командой по умолчанию, предупреждение больше не появится.

Рисунок 5. Диалоговое окно предупреждения системы безопасности с вариантами действий

Рекомендуем вам обратиться к следующим ресурсам:

Мы следим за всеми комментариями, которые вы оставляете ниже, и с нетерпением ждем ваших новых вопросов и отзывов.

Авторы

Автор этого материала –– Тарун Арора (Tarun Arora) (ALM MVP), соавторы –– Марк Пэйн и другие участники команды разработчиков отладчика Visual Studio. Тарун Арора –– сертифицированный разработчик Microsoft в области корпоративных приложений. Он много путешествовал по миру, набираясь знаний и опыта, работал в составе самых разных в культурном и языковом отношении групп программистов. У Таруна более пяти лет опыта создания решений в сфере продажи энергоресурсов и управления рисками для ведущих торговых компаний и банков. Он всегда стремился к глубокому пониманию новейших технологий, за что был удостоен звания Microsoft Community Contributor.