2010-08-09 11 views
5

Czy można używać poleceń windbg, takich jak !locks i .loadby sos mscorwks z okna komend Visual Studio (w sesji debugowania)? Zauważyłem, że mogę użyć np. k, aby wydrukować ślad stosu, więc zastanawiałem się, czy jest jakiś sposób na uzyskanie dostępu do innych poleceń.Korzystanie z windbg z Visual Studio

Odpowiedz

7

Tak, możesz to zrobić.

  1. Dołącz program Visual Studio 2008 do swojego procesu debugowania.
  2. Złamię jakiś kod.
  3. idź do natychmiastowego oknie
  4. typu !load sos
  5. Teraz jesteś wolny, aby używać żadnych poleceń WinDBG jak !EEHeap,!DumpHeap

Istnieją pewne warunki. Musisz włączyć niezarządzane debugowanie kodu we właściwościach projektu. Zwykle w wersji 64-bitowej studio tego nie obsługuje.

Baw się dobrze.

+0

fajne, dzięki za to. Każdy pomysł, czy mogę uzyskać dostęp do niezarządzanych windbg połączeń jak blokady lub analizy? – ngoozeff

+0

@ngoozeff: Myślę, że tylko polecenia od sosów są tutaj możliwe !! Ktoś mnie poprawi, jeśli się mylę. – ferosekhanj

+8

Przepraszamy za bycie tutaj, ale to nie są polecenia WinDbg, ale polecenia SOS. Niestety, zwykłe polecenia WinDbg nie są dostępne z VS Afaik, co sprawia, że ​​używanie SOS jest nieco trudniejsze. Ponadto VS nie obsługuje wszystkich niezbędnych interfejsów IDebugClient, więc dane wyjściowe z SOS są nieco głośne w VS. –

4

Visual Studio 2012 ma transport "Windows User Mode Debugger" w oknie dialogowym "Attach to Process". Pozwala to na użycie poleceń windbg w bezpośrednim oknie.

Źródło: Use the WinDbg Engine in Visual Studio User-Mode Debugging

+0

Mam zainstalowane Visual Studio 2012 Professional (Update 4). Jednak transport * Windows User Mode Debugger * nie wyświetla się dla mnie. Niektóre źródła twierdzą, że musisz zainstalować WDK na górze instalacji VS, ale wiarygodne informacje nie wydają się być łatwo dostępne. Więc jaka jest umowa? – IInspectable

+0

Od linku: 'Innym zastrzeżeniem jest to, że obecnie musisz zainstalować WDK na Visual Studio 11, aby uzyskać integrację debuggera." To nie działało dla mnie, albo dopóki nie zainstalowałem WDK. –

+1

Mogę potwierdzić, że zainstalowanie WDK systemu Windows 8.0 na Visual Studio zainstalowało również integrację Visual Studio. Mogę teraz wybrać * Windows User Mode Debugger * jako transport (lub wybrać inny debugger z ustawień * Debugger * projektu). Wygląda na to, że działa niezawodnie, chociaż jest to dla mnie powolne. Brakuje niektórych funkcji debugera VS (np. * Tracepoints *), podczas gdy inne uległy zmianie (np. Inna składnia do ustawiania punktów zatrzymania funkcji). Wydajne polecenia rozszerzenia WinDbg, takie jak '! Handle' lub'! Locks' są teraz dostępne z GUI VS (* natychmiastowe okno debugowania *). – IInspectable

2

Uruchamianie Windows Driver Development Kit (WDK) 8,0 debugger Windows jest zintegrowany z Visual Studio (patrz Debugging Environments). Zainstalowanie WDK na wierzchu instalacji Visual Studio pozwoli programiście wybrać kilka debuggerów z okna dialogowego Attach to Process lub ustawić silnik debuggowania w ustawieniach projektu Debugger. Zostało to sprawdzone dla Visual Studio 2012 i 2013. Sposób, w jaki przeczytałem powyższy link MSDN, powinien również działać dla każdego innego IDE obsługiwanego przez WDK 8.0 i nowsze.

Podczas gdy WinDbg oferuje wiele potężnych poleceń, istnieją również pewne wady. Ta lista nie jest wyczerpująca i zawiera tylko te problemy, które napotkałem:

  • Nie można dołączyć do więcej niż jednego procesu naraz. Chociaż nie jest to generalnie problem, jest to dość niefortunne, jeśli musisz debugować więcej niż jeden proces na raz. Debuger Visual Studio może dołączyć do dowolnej liczby procesów jednocześnie.
  • Program WinDbg nie będzie używał ustawień symboli z IDE programu Visual Studio (testowane w VS 2012 Update 4). Chociaż możesz skonfigurować IDE, gdzie szukać symboli debugowania, WinDbg nie będzie honorował tych ustawień. WinDbg użyje zmiennej środowiskowej _NT_SYMBOL_PATH i/lub zestawu konfiguracyjnego przez .sympath.
  • Inna składnia dla punktów przerwania funkcji. Jest to niewielka irytacja, ponieważ nie można używać składni programu Visual Studio do określania punktów przerwania funkcji. Oznacza to również, że punkty przerwania funkcji są ignorowane, które zostały ustawione przy użyciu składni Visual Studio. Co więcej denerwujące, podczas uruchamiania debuggera pojawia się okno dialogowe z ostrzeżeniem.
  • Brak wsparcia dla Tracepoints. Używałem wielu znaczników, aby dyskretnie wstawiać śledzenie do debuggee. Jeśli używasz również punktów kontrolnych, może to okazać się czymś więcej niż tylko irytacją.
+1

'komenda' bp' windbg przyjmuje polecenie do uruchomienia, gdy punkt krytyczny zostanie trafiony, więc możesz emulować punkt kontrolny. Na przykład 'bp combase! CoSetErrorInfo" dt combase! CErrorObject% edx; g "' –

Powiązane problemy