Как отладить в исходный код .NET Framework - PullRequest
0 голосов
/ 19 февраля 2019

Как можно отладить исходный код .NET Framework с помощью Visual Studio 2017?

Здесь есть несколько вопросов по поводу стекопотока по этой теме, но даже после прочтения всехЯ все еще не мог заставить это работать.Я подумал, что было бы полезно представить современное, работающее решение о том, как отлаживать исходный код .NET Framework.

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

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

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

Поскольку вы можете извлекать источники dotnet в любое место, Visual Studio не может знать о них, и причина не может быть в самих исходных файлах (почему Visual Studio этого не делает.найдите файлы).

Но некоторые библиотеки DLL доступны для просмотра, а некоторые нет (путем двойного щелчка в представлении стека Visual Studios или в контекстном меню> Перейти к исходному тексту).Это привело меня к предположению, что причиной является сама .pdb.Если вы посмотрите на файл, который работает (например, блокнот), вы увидите в начале список строк с файловыми путями (исходные файлы).В файлах, которые не работают, файлы начинаются немедленно с двоичных данных.

По какой-то причине Microsoft не создает свои .pdb с полной информацией отладки в каждом процессе сборки.Но почему бы и нет - хороший вопрос! g

Короче говоря: вам нужно найти dll-версию вашего файла (которую вы хотите отлаживать), которая содержит ИНФОРМАЦИЯ ПОЛНОЙ ОТЛАДКИ .Это также причина, почему контекстное меню отключает «Goto Source».Я заменяю этот файл временным в глобальном кэше сборок на время отладки.Это работает для меня.

Вот пример PresentationFramework.dll - 4.0.30319.298 => Размер pdb: 1219 КБ - 4.0.30319.18408 => Размер pdb: 15.562 КБ

Perhabs, кто-то может создатьобщедоступная база данных (вики), в которую каждый может добавлять файлы и версии, для которых доступна полная отладочная информация?

0 голосов
/ 19 февраля 2019

Прежде всего, я протестировал его, используя Microsoft Visual Studio Enterprise 2017, версия 15.9.7 и через .NET Framework 4.7.2.Тем не менее, я думаю, что он должен работать в редакции сообщества таким же образом.

Шаги, которые необходимо предпринять:

  1. Перейдите в Инструменты / Параметры / Отладка / Общие и выполните эти настройки:

    • check Включить пошаговое выполнение исходного кода .NET Framework (это автоматически отключит «Включить только мой код» ; если нет, сделайте это вручную)
    • снять отметку Требовать, чтобы исходные файлы точно совпадали с исходной версией
    • check Включить поддержку исходного сервера
  2. Перейдите в Инструменты / Параметры / Отладка / Символы и:

    • в верхнем списке проверки Серверы Microsoft Symbol
    • Нажмите Очистить кэш символовКнопка (чтобы убедиться, что вы получите правильные символы)
    • выберите Загрузить все модули, кроме исключенных переключатель внизу
  3. Загрузите исходную версию платформы .NET, на которую ориентирован ваш проект, с https://referencesource.microsoft.com/download.html site.

  4. Распакуйте загруженный архивный (zip) файл по удобному пути на вашем ПК.

  5. Отладьте ваше приложение;установите точку останова для строки кода .NET, которую вы хотите отладить, и перейдите к нужной строке кода с помощью отладчика.

Примечание: ваше приложение может запуститьсямедленнее, так как он будет загружать PDB из Интернета.

Нажмите Step * Into (по умолчанию F11).Если ваши настройки верны, это приведет к некоторой задержке (если ваш VS падает (как у меня), Очистите кэш символов снова).В конце концов он запросит источники данного файла, например, dictionary.cs.Здесь могут произойти две вещи:

  • A) Он запрашивает исходный файл (.cs) в диалоге файла.Перейдите к шагу 7.
  • B) Там написано whatever.cs не найдено, и есть ссылка " Просмотрите и найдите что угодно .cs ... ".Нажмите на эту ссылку.

Выберите соответствующий файл .cs на вашем диске (вы можете найти файл в ОС).

Примечание : мне приходилось перезагружать VS несколько раз, пока он "не зависал" при поиске источников, это, скорее всего, ошибка в VS.

Если вы все сделали правильно, вы обнаружите, что отлаживаете исходный код .NET.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...