2013-06-15 13 views
12

Dowiedziałem się, w jaki sposób plik .dll zestawu .NET jest mapowany do pliku .pdb przy użyciu identyfikatora GUID (blog). Kiedy debuguję do złożenia i prosi o kod źródłowy, jeśli przejdę do pliku, może mi powiedzieć, że kod źródłowy różni się od oryginału. Skąd to wie? Oczekiwano, że plik .pdb będzie zawierał sumę kontrolną dla każdego pliku, ale nie wygląda na to. Najlepszym narzędziem do zrzutu informacji debugujących jest dia2dump. Pliki C++ .pdb miały wpisy MD5, ale pliki C# .pdb nie.W jaki sposób program Visual Studio wie, czy plik źródłowy jest zgodny z oryginalną wersją?

C++ zrzucić
dia2dump -f dia2dump.pdb>dia2dump.pdb.files.txt

C# wysypisko
dia2dump -f Autofac.pdb>Autofac.pdb.files.txt
dia2dump -wszystkie Autofac.pdb>Autofac.pdb.all.txt

Czy jest coś brakowało w "wszystkich" wysypisku?

Musi używać sumy kontrolnej. Jeśli zmienię pojedynczy znak w Module.cs, otrzymuję:
enter image description here

Gdzie znajdę sumy kontrolnej dla pliku źródłowego wskazanej w .pdb?

Odpowiedz

8

Suma kontrolna MD5 jest przechowywana w pliku .pdb dla każdego pliku źródłowego. Jeśli odpowiesz „nie” na pytanie wyżej „? Chciałbyś debugger go używać i tak”, to wypisuje sumę kontrolną to szukałem:

enter image description here

pomocą edytora szesnastkowego można zobaczyć jest zdecydowanie w .pdb. Moim następnym zadaniem jest dowiedzieć się, jak uzyskać do niego dostęp programowo. W przypadku pliku .pdb chcę, aby zwrócił on wszystkie nazwy plików źródłowych i ich sumy kontrolne MD5.

enter image description here

+0

Szukałem w WPB plików dużo ostatnio. Możesz znaleźć więcej szczegółów tutaj. http://blog.ctaggart.com/search/label/pdb –

+0

Czy kiedykolwiek znalazłeś sposób na uzyskanie skrótu MD5 z PDB .NET? – Petrik

+2

Zrobiłem. Stworzyłem bibliotekę .NET o nazwie SourceLink, która może to zrobić. https://github.com/ctaggart/SourceLink –

Powiązane problemy