Debugowanie kodu zewnętrznych bibliotek, część II

Kilka dni temu opisywałem jak w VS 2008 debugować kod .NET Framework i obiecywałem sprostowanie do wersji 2012. Z tego co udało mi się dowiedzieć, temat nie jest zbyt jasny ale wygląda na to, że:

1. W niektórych wersjach VS2010 działało to ale potem znów zostało popsute.
2. W VS2012 funkcja nie działa. Jeśli komuś udało się to uruchomić pod VS 2012, proszę o komentarz pod wpisem.

Link do Microsoft Connect, opisujący bug:

http://connect.microsoft.com/VisualStudio/feedback/details/697947/net-framework-4-reference-sources-fail-since-out-of-date

Dyskusja na Stackoverflow:

http://stackoverflow.com/questions/8139269/how-do-you-enable-enable-net-framework-source-stepping

Z tego względu, w dzisiejszym wpisie, pokażę alternatywne rozwiązanie, z wykorzystaniem .NET Reflector Pro (wersja zintegrowana z VS).

Najpierw oczywiście pobieramy wersje trial i odznaczamy opcje VS z poprzedniego wpisu:
1. Enable Source Server Support
2. Enable .NET Framework Source Code Stepping

Chcemy polegać na Reflector a nie na VS, więc musimy zablokować Source Server i Code Stepping. Następnie z menu głównego wybieramy .NET Reflector->Generate PDBs…:

image

Pojawi się okno, gdzie możemy zaznaczyć biblioteki, które chcemy debugować. Oczywiście z wykorzystaniem reflector’a, nie musimy ograniczać się wyłącznie do kodu .NET Framework, ale możliwe jest debugowanie jakiekolwiek biblioteki zewnętrznej:

image

W poście, chcę zdebugować po prostu DateTime.Parse, dlatego zaznaczam z listy mscorlib. Następnie Reflector wygeneruje PDB dla danej biblioteki:

image

Pozostało nam teraz tylko uruchomić debugger i nacisnąć F11 na linii DateTime.Parse:

image

Osobiście, wielokrotnie miałem problemy z bibliotekami dostarczonymi przez firmy trzecie i nie wiedziałem dlaczego one nie zachowują się, jak tego oczekuję. Korzystając z powyższych kroków, łatwo odkryć, co nie tak robimy z daną biblioteką.

2 thoughts on “Debugowanie kodu zewnętrznych bibliotek, część II”

  1. Jako takie jest legalne może być niezgodne z licencją. A to wiąże się z ryzykiem pozwu ze strony dostawcy oprogramowania. Ale np. Telerik nigdzie w swojej licencji nie zabrania takiej praktyki (a co nie jest zabronione jest dozwolone).

Leave a Reply

Your email address will not be published.