Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W oknie Obserwowanie są wyświetlane informacje o zmiennych globalnych, zmiennych lokalnych i rejestrach. Możesz dostosować to okno, aby wyświetlić elementy, które śledzisz.
Otwieranie okna obserwacji
Aby otworzyć lub przełączyć się do okna Obserwacja, w oknie WinDbg, w menu Widok, kliknij Obserwacja.
Możesz również nacisnąć ALT+2 lub kliknąć przycisk Obejrzyj (ALT+2) na
ALT+SHIFT+2 zamknie okno obserwacji.
Poniższy zrzut ekranu przedstawia przykład okna Obserwacji.
Okno Obserwacji może zawierać cztery kolumny. Kolumny Nazwa i Wartość są zawsze wyświetlane, a kolumny Typ i Lokalizacja są opcjonalne. Aby wyświetlić kolumny Typ i Lokalizacja, kliknij przyciski Typ i Lokalizacja na pasku narzędzi.
W oknie Obserwowanie można wykonać następujące czynności:
Aby dodać zmienną do okna Czujka, wybierz pierwszą pustą komórkę w kolumnie Nazwa , wpisz nazwę zmiennej, a następnie naciśnij ENTER. Oddziel nazwę modułu od zmiennej wykrzyknikiem (!). Jeśli nie określisz modułu, używany jest bieżący moduł. Aby wprowadzić adres w polu Nazwa , adres musi zaczynać się od cyfry dziesiętnej (w razie potrzeby należy użyć prefiksu 0x).
Jeśli wprowadzona nazwa zmiennej jest zdefiniowana w zakresie bieżącej funkcji, jej wartość zostanie wyświetlona w kolumnie Wartość . Jeśli nie jest zdefiniowana, w kolumnie Wartośćzostanie wyświetlona wartość "Błąd: nie można pobrać wartości".
Nawet jeśli zmienna nie jest zdefiniowana, warto dodać ją do okna Obserwacja. Jeśli licznik programu wprowadza funkcję, w której zdefiniowano zmienną o tej nazwie, jej wartość pojawia się w tym czasie w oknie.
Aby usunąć zmienną z okna Czujka, kliknij dwukrotnie jego nazwę, naciśnij DELETE, a następnie naciśnij ENTER. Możesz również zastąpić starą nazwę nową nazwą, klikając dwukrotnie starą nazwę, wpisując nową nazwę, a następnie naciskając ENTER.
Jeśli zmienna jest strukturą danych, obok jej nazwy pojawi się pole wyboru. Aby rozwinąć i zwinąć wyświetlanie składowych struktury, zaznacz lub wyczyść pole wyboru.
Liczby całkowite typu int są wyświetlane jako wartości dziesiętne; Liczby całkowite typu UINT są wyświetlane w bieżącym radiu. Aby zmienić bieżący radix, użyj n (Ustaw bazę numerów) polecenia w oknie Polecenie debugera.
Aby zmienić wartość zmiennej lokalnej, kliknij dwukrotnie komórkę Value . Wprowadź nową wartość lub edytuj starą wartość. (Polecenia wycinania, kopiowania i wklejania są dostępne do edycji). Wprowadzona wartość może zawierać dowolne wyrażenie języka C++. Po wprowadzeniu nowej wartości lub edycji starej wartości możesz nacisnąć ENTER, aby zapisać nową wartość lub nacisnąć ESC, aby go odrzucić. Jeśli prześlesz nieprawidłową wartość, stara wartość pojawi się ponownie po naciśnięciu ENTER.
Liczby całkowite typu int są wyświetlane jako wartości dziesiętne; Liczby całkowite typu UINT są wyświetlane w bieżącym radiu. Aby zmienić bieżący radix, użyj n (Ustaw bazę numerów) polecenia w oknie Polecenie debugera.
Kolumna Typ (jeśli jest wyświetlana w oknie Czujka) pokazuje bieżący typ danych każdej zmiennej. Każda zmienna jest wyświetlana w formacie odpowiednim dla własnego typu danych. Struktury danych mają nazwy typów w kolumnie Typ . Inne typy zmiennych wyświetlają "Wpisz nowy typ" w tej kolumnie.
Jeśli dwukrotnie klikniesz pozycję "Wprowadź nowy typ", możesz określić typ, wprowadzając nowy typ danych. Rzutowanie powoduje zmianę bieżącego wyświetlania tej zmiennej tylko w oknie Obserwowanie; nie zmienia niczego w debugerze ani na komputerze docelowym. Co więcej, jeśli wprowadzisz nową wartość w kolumnie Wartość , wprowadzony tekst zostanie przeanalizowany na podstawie rzeczywistego typu symbolu, a nie każdego nowego typu, który mógł zostać wprowadzony w kolumnie Typ . Jeśli zamkniesz i otworzysz ponownie okno Obserwowanie, utracisz zmiany typu danych.
Możesz również wprowadzić polecenie rozszerzenia w kolumnie Typ . Debuger przekaże adres symbolu do tego rozszerzenia i wyświetli wynikowe dane wyjściowe w serii zwijanych wierszy poniżej bieżącego wiersza. Jeśli na przykład symbol w tym wierszu jest prawidłowym adresem bloku środowiska wątku, możesz wprowadzić ciąg !teb w kolumnie Typ , aby uruchomić rozszerzenie !teb na adres tego symbolu.
Kolumna Lokalizacja (jeśli jest wyświetlana w oknie Podgląd) pokazuje przesunięcie każdego elementu członkowskiego struktury danych.
Oprócz zmiennych można również monitorować następujące elementy w oknie Obserwowanie:
- Rejestry Po dodaniu rejestru do okna Obserwacja należy poprzedzić jego nazwę znakiem @ (@). W przeciwieństwie do zmiennych, nie można zmieniać wartości rejestru w oknie Obserwowanie.
- Tabele wirtualne zawierające wskaźniki funkcji. Gdy tabela wirtualna pojawi się w oknie Obserwowanie, możesz przeglądać wpisy funkcji w tabeli. Jeśli wirtualna tabela (Vtable) znajduje się w klasie bazowej wskazującej na implementację pochodną, zostanie wyświetlona notacja _vtcast_Class, aby wskazać członków dodawanych w wyniku istnienia klasy pochodnej. Te składowe rozszerzają się tak jak typ klasy pochodnej.
- Zwracane wartości funkcji rozszerzenia, takie jak _EFN_GetPoolData.
W przeciwieństwie do okna Ustawienia lokalne okno Obserwowanie nie ma wpływu na zmiany w kontekście rejestru. W oknie Obserwowanie można zobaczyć i zmodyfikować tylko te zmienne, które są zdefiniowane w zakresie bieżącego licznika programu.
Jeśli otworzysz nowy obszar roboczy, zawartość okna Watch zostanie odrzucona i zastąpiona tą z nowego obszaru roboczego.
Pasek narzędzi i menu skrótów
W oknie Obserwacja znajduje się pasek narzędzi zawierający dwa przyciski (Typecast i Lokalizacje) oraz menu kontekstowe z dodatkowymi poleceniami. Aby uzyskać dostęp do menu, kliknij prawym przyciskiem myszy pasek tytułu okna lub kliknij ikonę w pobliżu prawego górnego rogu okna:
Pasek narzędzi i menu zawierają następujące przyciski i polecenia:
(Pasek narzędzi i menu) Funkcja Typecast włącza i wyłącza wyświetlanie kolumny Typ .
(Pasek narzędzi i menu) Lokalizacje włącza i wyłącza wyświetlanie kolumny Lokalizacja .
(Tylko menu) Wyświetl 16-bitowe wartości jako Unicode wyświetla ciągi Unicode w tym oknie. To polecenie włącza i wyłącza globalne ustawienie, które ma wpływ na okno Ustawienia lokalne, okno czujki i dane wyjściowe polecenia debugera. To polecenie jest równoważne użyciu polecenia .enable_unicode (Włącz wyświetlanie Unicode).
(Tylko menu) Zawsze wyświetlaj liczby w domyślnej podstawie powoduje, że liczby całkowite są wyświetlane w domyślnej podstawie zamiast zawsze wyświetlać je w systemie dziesiętnym. To polecenie włącza i wyłącza globalne ustawienie, które ma wpływ na okno Ustawienia lokalne, okno czujki i dane wyjściowe polecenia debugera. To polecenie jest równoważne użyciu polecenia .force_radix_output (Użyj radix dla liczb całkowitych).
UwagaZawsze wyświetlaj liczby w domyślnym systemie liczbowym nie wpływa na długie liczby całkowite. Długie liczby całkowite są wyświetlane w formacie dziesiętny, chyba że jest używane polecenie .enable_long_status (Włącz wyświetlanie długiej liczby całkowitej). Polecenie .enable_long_status wpływa na wyświetlanie w oknie Ustawienia lokalne, okno czujki i dane wyjściowe polecenia debugera. W menu w oknie Obserwowanie nie ma odpowiednika tego polecenia.
(Tylko menu) Otwórz okno pamięci dla wybranej wartości otwiera nowe zadokowane okno Pamięci, które wyświetla pamięć rozpoczynające się od adresu wybranego wyrażenia.
(Tylko menu) Wywołaj dt dla wybranej wartości pamięci uruchamia dt (Typ wyświetlania) polecenie z wybranym symbolem jako jego parametrem. Wynik zostanie wyświetlony w oknie Polecenie debugera. Opcja -n jest automatycznie używana do odróżnienia symbolu od adresu szesnastkowego. Nie są używane żadne inne opcje. Pamiętaj, że zawartość utworzona przy użyciu tego zaznaczenia menu jest identyczna z zawartością utworzoną podczas uruchamiania polecenia dt z wiersza polecenia, ale format jest nieco inny.
(Tylko menu) Pasek narzędzi włącza i wyłącza pasek narzędzi.
(Tylko menu) Dokowanie lub Odłączenie powoduje, że okno wchodzi lub wychodzi ze stanu dokowania.
(Tylko menu) Przejście do nowego doku zamyka okno Podglądu i otwiera je w nowym doku.
(Tylko w menu) Ustaw jako docelowy dock zakładki dla typu okna jest niedostępny dla okna Podgląd. Ta opcja jest dostępna tylko dla okien źródła lub pamięci .
(Tylko menu) Zawsze unoszące się powoduje, że okno pozostanie niezakotwiczone, nawet jeśli zostanie przeciągnięte do miejsca dokowania.
(Tylko menu) Przeniesienie z ramką powoduje przeniesienie okna po przeniesieniu ramki WinDbg, nawet jeśli okno jest oddokowane.
(Tylko menu) Pomoc spowoduje otwarcie tego tematu w dokumentacji narzędzi debugowania dla systemu Windows.
(Tylko menu) Zamknięcie zamyka to okno.
Zobacz też
Aby uzyskać więcej informacji na temat kontrolowania zmiennych i opisu innych poleceń związanych z pamięcią, zobacz Odczytywanie i zapisywanie pamięci. Aby uzyskać więcej informacji o rejestrach i ich manipulowaniu, zobacz Wyświetlanie i edytowanie rejestrów w usłudze WinDbg (wersja klasyczna).