2012-10-29 26 views
7

Niedawno zmieniłem programowanie z natywnego na zarządzany kod. Używam .NET.Przechodzenie przez kod źródłowy za pomocą rozszerzenia Windbg SOS

Odkąd używam Windbg od dłuższego czasu, chcę użyć go również do zarządzania debugowaniem kodu.

Moje poszukiwania doprowadziły mnie do rozszerzenia SOS (Son of Strike), które wydaje się mieć dość mocne polecenia.

Mimo że rozumiem większość poleceń wykorzystywanych w SOS, nie jestem w stanie znaleźć sposobu na prawidłowe przejście przez kod źródłowy, tak jak mogłem zrobić to za pomocą instrukcji p i t dla natywnego kodu.

To sprawia, że ​​korzystanie z debugowania jest trudne i naprawdę chcę przejść przez kod podczas jego debugowania.

Zbadałem trochę na ten temat i odkryłem, że było to możliwe przy użyciu wersji Windbg 6.7.05.0, w której MS wydawało się wydać zintegrowane zarządzanie debugowaniem, ale wycofano w późniejszych wersjach.

Mimo to jestem bardzo ciekawa możliwości przejścia przez kod "source" na żywo podczas debugowania przez SOS. Szczególnie dlatego, że obecnie bardzo utrudnia to moje doświadczenie w debugowaniu.

Czy istnieje sposób, aby to osiągnąć?

Każda pomoc, jak to zrobić (lub praktyczne obejścia) jest doceniana.

Odpowiedz

6

Windbg świeci przy analizie minizrzutu awarii. Nie jest to jednak zarządzany debugger.

Możesz zjeść ciastko i zjeść je również, ładując SOS w Visual Studio. Co pozwala na używanie normalnych narzędzi do debugowania dostępnych w zarządzanym debugerze oraz diagnostykę, którą można uzyskać z SOS. Kilka ograniczenia:

  • należy włączyć niezarządzanej debugowania, Project + Properties, zakładka Debug zaznaczyć opcję
  • VS to proces 32-bitowe, dzięki czemu można używać tylko w wersji 32-bitowej SOS. Project + Properties, karta Build, upewnij się, że wybrano x86, jeśli używasz 64-bitowej wersji systemu Windows.

Rozpocznij debugowanie i przełącz na natychmiastowe okna. Wpisz .load sos.dll, powinieneś zobaczyć komunikat taki jak extension C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.dll loaded. Wpisz! Help i sprawdź, czy na liście znajdują się polecenia SOS.

5

Spróbuj użyć! Sosex.mt i! Sosex.mgu. Polecenie "p" powinno działać tak, jak było reklamowane.

+1

Hej Steve, fajnie jest mieć odpowiedź od twórcy samego SOSEX ..!Moim głównym celem jest upewnienie się, że podczas przechodzenia przez kod widzę poprawną linię kodu podświetloną w debugerze. Chociaż nie mogę tego zrobić za pomocą SOS, a od ciebie odpowiadam, zbieram, że "! Sosex.mt" i "! Sosex.mgu" będą odpowiednikami t i gu dla natywnego kodu. Ale czy wykonanie tych komend również podświetli odpowiednie wiersze kodu w oknie źródłowym? Jeszcze raz dziękuję za Twoją odpowiedź ! – Dev28

+2

Może się zdarzyć, że w późniejszych wersjach WinDbg synchronizacja źródła nie będzie działać poprawnie. Niestety nie mam kontroli nad tą częścią. Jeśli jednak użyjesz rozszerzenia! Muf, możesz całkiem dobrze zsynchronizować się z kodem źródłowym. Nie jest tak ładne jak podświetlenie w oknie kodu, ale działa. –

+0

Dzięki Steve. Pomoże ci to, jeśli możesz określić, jakie dokładnie będą "późniejsze wersje WinDbg"? – Dev28

0

Jeśli to, co chcesz, jest hookup kod źródłowy do WinDBG można śledzić te kroki:

  1. idź do Plik-> Źródło ścieżka do pliku, wybierz folder z plikami źródłowymi.
  2. Przejdź do Widok-> Stos połączeń, otworzy nowe okno.
  3. Nawiguj w stosie wywołań i kliknij odpowiedni wpis, otworzy się okno z przeglądarką kodu.