Обновление от 22 февраля 2013 г . : В записи Microsoft Connect есть примечание от Алока Ширама (менеджер программ, библиотеки базовых классов, .NET Framework) о том, что проблема должна быть решена. Запись Connect помечена как Решенная (фиксированная) :
Теперь эта проблема должна быть исправлена. Мы опубликовали обновление справочных источников. Сообщите нам, если проблема все еще не решена.
Полтора года.
Бонусные ссылки
Проголосуйте за исправление этой ошибки в Microsoft Connect .
Тема в Microsoft Social, которая идет уже полтора года, спрашивает, когда это будет исправлено .
Исходный вопрос
Как включить пошаговое выполнение исходного кода .NET framework в Visual Studio 2010?
Примечание . Этот вопрос является частью большого целого:
- .NET 2.0 WinForm: поддержка изменений DPI и шрифтов по умолчанию
- Элементы управления WinForms не масштабируются во время ScaleControl
- VS2010: Как включить «Включить степпинг исходного кода .NET Framework»?
- Visual Studio 2010 Professional: как получить доступ к окну модулей?
- Visual Studio 2010: Properties.Settings нарушены после перенацеливания проекта на .NET Framework 3.5
Visual Studio 2010 поставляется с новой функцией:
- Инструменты, Параметры, Отладка, Общие, Включить пошаговое выполнение исходного кода .NET Framework
Следуя инструкциям на странице MSDN Как выполнить отладку источника .NET Framework :
Включение отладки исходного кода .NET Framework
В меню " Сервис " выберите " Параметры" .
В диалоговом окне « Параметры » щелкните категорию « Отладка ».
В поле Общие установите следующие флажки:
- Включить пошаговое выполнение исходного кода .NET Framework
- Включить поддержку исходного сервера
Я сделаю это:
Примечание : вы заметите, как указано на странице MSDN, и, как я заметил, установка флажка «Включить пошаговое выполнение исходного кода .NET Framework» автоматически снимает флажок ** Включить только мой код (только для управляемого кода). Я также включил диагностические сообщения поддержки исходного сервера.
Включение этих параметров автоматически устанавливает для меня место загрузки кеша символов:
Примечание . Запись Microsoft Symbol Server уже присутствует (и не может быть удалена).
На странице MSDN говорится о загрузке символов:
Чтобы загрузить символы Framework с помощью окна модулей
В окне " Модули" щелкните правой кнопкой мыши модуль, для которого не загружены символы. Вы можете определить, загружены ли символы, по столбцу « Статус символов» .
Наведите указатель мыши на « Загрузить символы из» и щелкните « Серверы символов Microsoft», чтобы загрузить символы с общедоступного сервера символов Microsoft, или «Путь к символам» для загрузки из каталога, в котором ранее были сохранены символы.
Я пробую это:
а затем загружаются все символы:
Я сижу на точке останова, которая вот-вот вызовет код .NET framework:
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
base.ScaleControl(factor, specified);
При нажатии F11отладчик просто переходит к следующей строке:
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
base.ScaleControl(factor, specified);
//Record the running scale factor used
this.scaleFactor = new SizeF(
this.scaleFactor.Width * factor.Width,
this.scaleFactor.Height * factor.Height);
Как включить пошаговое выполнение исходного кода .NET Framework в Visual Studio 2010?
Я сижу в точке останова в своем коде. Я пытаюсь дважды щелкнуть функцию выше в стеке вызовов. Я надеюсь, что это позволит мне перейти к коду .NET:
За исключением того, что это не работает: Visual Studio сообщает мне, что источник недоступен:
Как включить пошаговое выполнение исходного кода .NET Framework в Visual Studio 2010?
Если я переключаюсь в режим дизассемблирования перед тем, как перейти к .NET-коду ( Debug -> Windows -> Disassembly ), я могу увидеть call
в коде .NET:
И когда я это делаю, я заканчиваю отладку дизассемблера System.Windows.Forms.ScaleControl
:
Это не то же самое, и не то же самое, что возможность войти в исходный код .NET Framework.
Как включить пошаговое выполнение исходного кода .NET Framework в Visual Studio 2010?
Настроенный путь кэша символов на моем компьютере действительно содержит файлы кэша символов:
Таким образом, он загружает pdb
файлы символов, но отказывается их использовать.
Как включить пошаговое выполнение исходного кода .NET Framework в Visual Studio 2010?
Леппи посоветовал мне проверить Debug
журнал (с открытым окном журнала отладки; в противном случае он ничего не регистрирует):
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
Ранее в журнале я вижу, что он загружает символы для System.Windows.Forms.dll
:
Loaded 'C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Symbols loaded.
Так ему будет найти свои символы, но утверждает , что он не мог их найти.
Как включить пошаговое выполнение исходного кода .NET Framework в Visual Studio 2010?
Парень из Microsoft Italy предлагает отключить Требовать, чтобы исходные файлы точно соответствовали исходной версии :
Это не помогло.
Как включить пошаговое выполнение исходного кода .NET Framework в Visual Studio 2010?
Было высказано предположение, что в исходном сервере Microsoft для .NET Framework 4.0 есть ошибка . Следуя этому предложению, я переключил проект на целевой .NET Framework 3.5 :
Это не помогло.
Как включить пошаговое выполнение исходного кода .NET Framework в Visual Studio 2010?
Кто-то где-то праздно гадал, не использовал ли другой человек, столкнувшийся с такой же проблемой, 64-битную версию отладчика . Сейчас нет такой вещи, как 64-битная версия Visual Studio, но я попытался переключить свой проект с AnyCPU на x86 (он был JITed на x64), на случай, если Microsoft не поддерживает 64-битные процессоры:
Это не помогло:
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
Как включить пошаговое выполнение исходного кода .NET Framework в Visual Studio 2010?
Смотрите также
- Настройка Visual Studio для отладки исходного кода .NET Framework
- Невозможно отладить код платформы .NET в VS2010
- Пошаговое выполнение исходного кода .NET framework не работает, несмотря на установленные параметры
- Настройка Visual Studio 2010 для перехода в исходный код Microsoft .NET
- Visual Studio 2008 SP1 отладка исходного кода .NET Framework
- Окно No Debug> Modules в Visual Studio 2008 версии 9.0.21022.8 RTM
источник
Ответы:
PDB для пошагового выполнения исходного кода публикуются только для RTM и пакетов обновления. Таким образом, когда выходит обновление для системы безопасности, и оно изменяет DLL, которую вы пытаетесь отладить, это приведет к тому, что пошаговое выполнение исходного кода не будет работать (то есть вы получите сообщение «Нет доступных источников» с выделенным серым цветом «Обзор, чтобы найти исходный код»). «).
Однако после того, как вы выполните все необходимые настройки, вы можете использовать следующий обходной путь. Обходной путь заключается в том, чтобы найти обновления безопасности, которые привели к изменению библиотеки DLL, а затем удалить их. Это имеет очевидный недостаток - удаление этих обновлений безопасности на вашем компьютере.
Временное решение
site:support.microsoft.com/kb System.Windows.Forms.dll 4.0.30319.269
http://support.microsoft.com/kb/2604121
таким, что нас интересует KB2604121.Вам нужно будет сделать это для каждой dll в .NET framework, в которой вы хотите отлаживать.
Как только это будет сделано, установите точку останова в источнике .net (например, перейдите на вкладку «Точки останова», скажите New-> Break at Function и введите System.Windows.Forms.Form.Form) или войдите в один из .net методы в этой dll.
источник
Хотя, к сожалению, есть проблема с Microsoft, как указал Леппи (и я получил тот же результат, см.
Следует отметить, что ваша попытка все равно не удастся, поскольку вы ссылались:
вместо того:
referencesource.microsoft.com/symbols
См. Раздел «Часто задаваемые вопросы / Устранение неполадок» в разделе « Настройка Visual Studio для отладки исходного кода .NET Framework».
источник
Думаю, я нашел ответ.
Я проследил, что происходило на Fiddler. Кажется, в настоящее время доступны только символы, а не источник.
Когда VS пытается загрузить символы с сервера-источника ссылок, он терпит неудачу (404). Поскольку это не удается, я думаю, что он не может сопоставить исходные файлы на этом сервере.
http://referencesource.microsoft.com/symbols/mscorlib.pdb/ED96A7F38A2940F39B9CA7AD9BC5CB671/mscorlib.pdb
После указанной выше ошибки он пытается использовать какой-то сервер с именем 'msdl', где находит фактическую PDB (но, похоже, у этого нет информации об исходном коде).
http://msdl.microsoft.com/download/symbols/mscorlib.pdb/ED96A7F38A2940F39B9CA7AD9BC5CB671/mscorlib.pd_
В общем, похоже, что это (временная) проблема Microsoft с их серверами.
Я уверен, что некоторое время назад у меня был исходный код. Но сейчас это не работает.
Редактировать:
Пробовал с разными версиями .NET, все тот же результат. :(
источник
Пока это не работает, если у вас установлен SP1. Вот некоторые комментарии о проблемной форме MS: http://social.msdn.microsoft.com/Forums/en-US/refsourceserver/thread/41388c7b-582b-4e3f-8178-3d38a3c99639
источник
В моем случае я отлаживал старое приложение .NET 2.0 WinForms и получил сообщение «Источник недоступен» . Все рекомендуемые настройки перепробовал.
В конце концов, я перестроил приложение для временного нацеливания на .NET 4.5 и смог заставить исходный код работать. Возможно, мое приложение было слишком старым для степпинга исходного кода. Вроде поражений цель, я знаю, но для быстрого и грязного тестирования работает. Ошибка, которая у меня есть, все еще присутствует в .NET 4.5 . :)
источник
Вы можете найти справочный источник здесь, доступный для загрузки:
Справочный источник .NET Framework 4.0
Там же можно найти исходники для WCF, WF и даже 4.5 Beta / RC и многих других:
Справочный материал Microsoft NetFramework
источник
Вот официальные инструкции https://referencesource.microsoft.com/setup.html
источник
если вы хотите отлаживать открытый исходный код (например, пакет nuget), вы можете добавить этот URL-адрес в список серверов символов.
http://srv.symbolsource.org/pdb/Public
источник