2011-12-08 10 views
8

Mam bibliotekę DLL i mam dokładne źródła używane do utworzenia biblioteki DLL. Chcę, aby nasz lokalny serwer symboli działał, gdy otrzymamy plik zrzutu od klientów. (Aktualizacja biblioteki DLL na stronie klienta nie może być wykonana przed następną łatką/wydaniem naszego produktu).Czy można (ponownie) utworzyć plik PDB po utworzeniu biblioteki DLL?

+0

Czy próbowałeś przekompilować ten plik DLL? – rekire

+0

Debugger nie pasuje do nowego PDB ze starym plikiem DLL – Arve

Odpowiedz

6

To wydaje się niemożliwe. Rzucić okiem na to tutaj: Why does Visual Studio require debugger symbol files to exactly match the binary files that they were built with?

lub niniejszego artykułu PDB Files: What Every Developer Must Know

Quote OUT "pliki PDB: Co każdy ...":

Niezwykle ważnym elementem jest jak debugger wie jest to dokładny pasujący plik PDB dla tego pliku binarnego. Dokonano tego za pomocą GUID , który jest osadzony zarówno w pliku PDB, jak i pliku binarnym. Jeśli identyfikator GUID nie jest zgodny z , z pewnością nie będzie debugowania modułu pod kodem źródłowym poziomu.
Kompilator .NET, a dla macierzystego łącznika, umieszcza ten identyfikator GUID w binarnym i PDB o wartości . Ponieważ akt kompilacji tworzy ten identyfikator GUID, zatrzymaj się i pomyśl o tym przez chwilę. Jeśli masz wczorajszą kompilację i zrobiłeś , czy nie zapisałeś pliku PDB, czy kiedykolwiek będziesz mógł ponownie debugować plik binarny? Nie! Dlatego tak ważne jest zapisywanie plików PDB dla każdej wersji . Ponieważ wiem, że o tym myślisz, odpowiem na pytanie, które już powstało w twoim umyśle: nie, nie można zmienić identyfikatora GUID na .

+2

Wygląda na to, że masz rację. Wygląda jednak na to, że w niektórych przypadkach można użyć polecenia chkmatch: http://www.debuginfo.com/tools/chkmatch.html – Arve

+0

Wow, ciekawy link! Ok, * zwykle * nie jest możliwe. Mam nadzieję, że chkmatch może ci pomóc. – Markus

Powiązane problemy