Дебъгване на сорс кода на .NET


13

Здравейте,

Днес попаднах на сравнително нова информация, че от Майкрософт са си обновили страницата: http://referencesource.microsoft.com/ 

Вече представлява SPA приложение за лесно разглеждане на сорс кода на .NET.

Има и плугин, с който директно от Visual Studio с F12 да ви пренасочва към страницата и съответният метод, клас и т.н.
http://visualstudiogallery.msdn.microsoft.com

Работят и по възможността да дебъгваш вътре в .NET, която е била достъпна при Visual Studio 2008 (Но в следвие на бъдещи ъпдейти спира да работи).

Статии за повече информация:
http://blogs.msdn.com/
http://www.hanselman.com/
 




Отговори



10

Здравейте, 

Вече и дебъгването на .NET функциите е факт, тествах го на Visual Studio 2013 Update 3 RC. Уловка е, че проекта трябва да е .NET 4.5.1 или по-нов.

Може да влизате директно в кода на .NET, докато си дебъгвате приложението.

Това е много полезно за по-доброто разбиране на .NET, примерно, аз дебъгнах BigInteger като му подавам Decimal, и учудващо влезнах в кода на Decimal и се вижда как .NET ни парсва числото, преди да се подаде нататък.

Нужни са следните настройки:

In order to configure Visual Studio 2013 do the following in the Tools -> Options -> Debugging -> General menu:

  • Disable just my code
  • Disable step over properties and operators
  • Disable require source files to exactly match the original version
  • Enable .NET framework source stepping
  • Enable source server support

This is what you need to do:

image


Също така съм настройл Symbols:

 
 

Трябва да uncheck-нете задължително Microsoft Symbol Servers, защото те не съдържат информация за влизането в сорс кода на асемблитата.

Добавете от бутона папка* ново репозитори: 
referencesource.microsoft.com/symbols

След като натиснете ОК, студиото ще започне да ви сваля дебъг символи (.pdb-та) когато направите тези настройки, това отнема малко време, и при всеки проект когато използвате различни асемблита и те не са свалени, ще имате такова изчакване и сваляне.

Ако нещо объркате и свалите грешни символи, трябва да ги изчистите с бутона Empty Symbol Cache, преди да може да свалите новите от сървърът.

Този код използвах за теста:

   1:          private static void Main(string[] args)
   2:          {
   3:              // First you will enter in Decimal.cs
   4:              // The .NET parses our number, then we will enter BigInteger constructor
   5:              var bigInteger = new BigInteger(3.141592653589793M);
   6:   
   7:              // Generate a collection of values (1-100)
   8:              var numbers = Enumerable.Range(1, 100);
   9:              // Order them randomly
  10:              numbers = numbers.OrderBy(n => {
  11:                  return Guid.NewGuid();
  12:              });
  13:              // Store these values in an array
  14:              var numberArray = numbers.ToArray();
  15:              // Sort the array
  16:              Array.Sort(numberArray);
  17:          }


Ако не ви сработва, убедете се:
Ползвате Visual Studio 2013 Update 3.
Проекта ви е настроен да се билдва за .NET 4.5.1 или по-нов.
Всички останали настройки които описах по-горе, са ви наред.

Имайте предвид, че не всички асемблита имат дебъг символи на сървърът, т.е. не всички функции от .NET могат да бъдат дебъгвани.

Тук може да видите списъкът с индексираните дебъг символи:
http://referencesource.microsoft.com/indexedpdbs.txt