Подтвердить что ты не робот

"Обзор поиска источника" в Visual Studio 2010

Когда в Visual Studio 2010 включен параметр "Поиск источника"? (см. ниже)

Enter image description here

Кроме того, я хочу, чтобы он был включен, чтобы я мог просматривать уже загруженный исходный код файлы из http://referencesource.microsoft.com/.

Это было бы полезно, поскольку Microsoft не всегда выпускает PDB/исходный код одновременно с их последними исправлениями. Поэтому, если я хочу сделать шаг, например, в DateTime, мне действительно не нужны последние исправления, которые не связаны с DateTime. Я просто хочу перейти к его коду, который я загрузил из http://referencesource.microsoft.com/.

После некоторых исследований я нашел dia2dump, который является полезным инструментом для просмотра содержимого файла PDB. (Это в C:\Program Files (x86)\Microsoft Visual Studio 10.0\DIA SDK\Samples\DIA2Dump\)

Похоже, что когда я не вижу исходного кода для чего-то вроде DateTime, используя шаг .NET Framework, файл mscorlib.pdb фактически загружается.

Но если вы заглянете в него с помощью dia2dump, он не содержит сопоставлений исходного файла. Другими словами, бесполезно, потому что даже если вы можете перейти к исходному коду, как моя первоначальная идея, это не сработает, потому что нет сопоставлений исходного файла и нет начальных адресов функций, а много чего отсутствует:(

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

4b9b3361

Ответ 1

Введение

Всякий раз, когда вы делаете сборку из Visual Studio, обычно вы также получаете файл в нескольких местах

  • 1.1 Если он не находит его, вы получаете "Поиск, чтобы найти источник" отключен стр. Помните, вы не можете отлаживать без действительного файла PDB.

  • 1.2 Если он находит файл PDB, он просматривает файл PDB и видит, что вы пытаетесь отлаживать Class1.cs, который изначально был создан из

    G:\ClassLibrary1\Class1.cs
    

    и просматривает ваш компьютер для этого файла.

  • 1.2.1 Если он находит это, он автоматически переходит в код.

  • 1.2.2 Если он не находит его, вы получите следующий диалог:

Browse to source file

Если вы нажмете "Отмена", вам будет представлен "Нет источника", и в этом случае вы включите "Обзор, чтобы найти источник".

Enter image description here

Почему? Поскольку у вас есть действительный файл PDB, но Visual Studio не может знать, где у вас есть исходный код для ClassLibrary1 на вашем компьютере или если у вас его даже есть на вашем компьютере. Вот почему вы получили диалог → , чтобы вы могли указать Visual Studio на точное местоположение файла исходного кода.

Заключительные примечания

Итак, что вы будете делать, когда получите доступ к источнику, который отключен?

В Visual Studio вы открываете меню Debug → Windows → стек вызовов.

Вы щелкните правой кнопкой мыши на верхней команде stak и выберите "Информация о загрузке символов". Он покажет вам места, где Visual Studio попыталась найти действительный файл PDB.

  • 1.a Если вы видите только сообщения "Не удается найти или открыть PDB файл", поместите действительный файл PDB в любом из этих мест. (Возможно, вам потребуется прокрутить вправо, чтобы увидеть сообщения) Остановить и начать отладку снова.
  • 1.b Если вы видите сообщение "PDB не соответствует изображению", это означает следующее. Visual Studio нашел файл PDB, но для другой сборки. Если я создам ClassLibrary1.dll и передам его вам, а затем я буду строить его без изменения одной строки кода, а затем дать вам PDB, и вы попытаетесь для отладки classLibrary1.dll вы получите это сообщение. Сборка и ее файл PDB должны быть точно из одной и той же сборки, иначе вы получите это сообщение. (Эта проверка выполняется с использованием некоторого уникального номера, помещенного внутри сборки и файла PDB каждый раз, когда вы создаете).
  • 1.c Вы видите сообщение, загруженное символами, но по-прежнему отключите "Обзор для поиска". Это означает, что файл PDB, который у вас есть, не подходит для пошаговой отладки. Некоторые файлы PDB, которые вы пытаетесь использовать, не имеют всей информации, необходимой для поэтапной отладки. Я думаю, что вы можете контролировать это где-то в расширенных настройках сборки, но я еще не пробовал, потому что я хочу, чтобы каждый раз, когда я делал сборку, каждый раз, когда я делал сборку, я получал файлы PDB. Эта ситуация часто возникает, если вы пытаетесь отлаживать исходный код структуры .NET, и Microsoft не добавила полезные файлы PDB для источника кода, но вместо этого Microsoft поместила некоторые файлы PDB, которые не могут использоваться для отладки. Это происходит чаще, чем вы думаете, потому что часто Microsoft делает обновления (исправления) исходным кодом .NET Framework. Эти обновления без проблем устанавливаются на ваш компьютер через Центр обновления Windows, и вы удивлены, увидев, что вчера вы можете отлаживать исходный код .NET Framework, и сегодня вы не можете. Обычно требуется некоторое время, пока они не вернут действительный файл PDB для последнего кода. В этом случае вы можете использовать .NET Reflector. Возможность отладки с шагом или виртуальная машина с версией .NET Framework с полезными PDB файлами и отключением Центр обновления Windows на этом компьютере.

Ответ 2

Просмотрите статью Шаг в исходный код .NET Framework 4.0.

Если вы столкнулись с экраном "Нет источника", попробуйте нажать "Обзор для поиска источника" и найдите нужный файл в исходной папке. Вероятно, вам нужно будет использовать поиск файлов, чтобы найти его. Это делается только один раз, так как с этого момента Visual Studio запоминает это местоположение и ищет там отсутствующие исходные файлы.

Надеюсь, это о том, что вы ищете.