2010-04-16 19 views
5

Podążałem za Tess Ferrandez' blog, aby skonfigurować niestandardową kompozycję w WinDbg.Jak utworzyć dokowanie okna ".cmdtree" podczas uruchamiania w WinDbg?

I zaczęły również uruchomienie WinDbg automatycznie -c „.cmdtree c: \ mycmdtree.txt”

to poprawnie otwiera mój plik cmdtree jako okno poleceń, ale nie mogę zmusić go do prawidłowego dokowania. Problem polega na tym, że okna "poleceń" można otworzyć dopiero po otwarciu pliku DMP, ale otwarcie pliku DMP spowoduje wyłączenie obszaru roboczego "podstawowa", dlatego wszelkie zmiany w obszarze roboczym nie zostaną zapisane.

Wszelkie pomysły?

+0

Czy rzeczywiście udało Ci się skonfigurować dokowanie Okna za pomocą dostarczonej odpowiedzi? Mam 2 problemy: a) dokuje, ale nie na pozycji, którą lubię i b) zawsze dokuje do drugiego okna –

Odpowiedz

7

Ta prosta prośba okazuje się bardzo skomplikowana. Pozycje okna WinDbg są zapisywane w obszarze roboczym. WinDbg ma kilka domyślnych przestrzeni roboczych:

  • podstawa - jest to obszar roboczy, który jest używany przed rozpoczęciem debugowania (nie zrzut otwarte, nie exe otwarte, nie przywiązany do niczego)
  • Per pliku zrzutu - dla każdego zrzucić cię otwórz, masz przestrzeń roboczą dla tego pliku
  • Na plik wykonywalny - dla każdego pliku wykonywalnego, który otworzysz.
  • User-mode - stosowane, gdy jesteś w trybie użytkownika żywo debugowanie
  • Kernel-mode - stosowane, gdy jesteś w trybie jądra debugowanie
  • Per architektury maszynowej - 1 dla x64, 1 dla x86, & 1 dla IA64
  • Remote - stosowane, gdy jesteś zdalne debugowanie

Dla danego typu debugowania (czyli trybu użytkownika żywo lub analiza zrzutu post-mortem), który zazwyczaj kończy się z kombinacji ustawień BASE + twój typ debugowania.

Jeśli otworzysz plik zrzutu, masz BASE + za pliku zrzutu Jeśli mieszkasz łatwy w trybie debugowania, można uzyskać w trybie użytkownika BASE + Jeśli mieszkasz jądro debugowania maszyny x64, masz BASE + kernel- Tryb + x64

Wszystkie zmiany wprowadzone w danym trybie są zapisywane w ostatnim obszarze roboczym, który nałożył się ostatni. Oznacza to, że jeśli otworzymy plik zrzutu (więc mamy zrzut Bazowy + Per), wszelkie zmiany ustawień zostaną zapisane w obszarze roboczym dla tego zrzutu.

Oprócz wbudowanych obszarów roboczych i wszystkich ich kombinacji istnieją nazwane przestrzenie robocze (klienci). Będzie tak, gdy przejdziesz do Plik> Zapisz przestrzeń roboczą i podaj nazwę, aby zapisać wszystkie ustawienia, które możesz następnie włączyć po uruchomieniu Windbg za pomocą argumentu wiersza polecenia -W.

Powrót do pytania. Jak mogę otworzyć .cmdtree? W podstawowym obszarze roboczym nie można. Wiele okien jest dostępnych tylko wtedy, gdy debugger NIE jest w stanie uśpienia (w jego obszarze roboczym BASE). Po wprowadzeniu debugera do dowolnego z jego aktywnych stanów, te okna są dostępne.

Problem polega na tym, że aby wszystko było ustawione tak, jak chcesz, musisz mieć włączony debugger (otwarty exe, otwarty zrzut, debugowanie na żywo) i kiedy idziesz do zapisz układ okna, a także zapisuje, który exe był otwarty, zrzutu lub debugowania na żywo, które robiłeś.

Najlepiej jest po prostu zrobić to, co już robiłeś, czyli po prostu użyć -c w rejestrze (HKEY_CLASSES_ROOT \ WinDbg.DumpFile.1 \ shell \ Open \ command). Umożliwi to dwukrotne kliknięcie zrzutu i otrzymanie tych opcji wiersza poleceń za każdym razem, gdy wykonujesz analizę zrzutów. Następnie możesz utworzyć skrót do windbg, który również zawiera wiersz poleceń, więc te ustawienia zostaną zastosowane do innych typów debugowania, które wykonujesz.

Oto mój wiersz poleceń z RegKey powyżej:

"c: \ debugerów \ x64 \ windbg.exe" -z "% 1" -q -c”-W Wewnętrznego .load winde.dll; .enable_unicode 1; .ignore_missing_pages 1; .logopen/t C: \ Users \ jasone \ Logs \ debug.log; aS .p .process/p/r; aS .t .thread/p/r; aS! p! process ; aS! t! wątek; aS .f .frame; aS dv dv/V/i/t; aS .f .frame "

Co to oznacza?

Uruchamia debugger, dołącza do pliku zrzutu, NIE wyświetla monit o zapisanie ustawień obszaru roboczego, Otwiera mój obszar roboczy "Wewnętrzny" (utworzony przez niego nazwany obszar roboczy) i uruchamia te polecenia, aby załadować rozszerzenia debugowania, ustawienia preferencji i utworzyć aliasy ułatwić mi życie.

Powiązane problemy