Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Można zmienić format, w którym wartość jest wyświetlana w oknach Watch, Autos i Locals , używając specyfikatorów formatu.
Specyfikatory formatu można również używać w oknie Natychmiastowy , w oknie Polecenia , w punktach śledzenia, a nawet w oknach źródłowych. Jeśli wstrzymasz wyrażenie w tych oknach, wynik pojawi się w etykietce danych. Wyświetlanie etykietki danych odzwierciedla specyfikator formatu.
Uwaga / Notatka
Gdy debuger natywny programu Visual Studio zmienił się na nowy aparat debugowania, dodano niektóre nowe specyfikatory formatu i usunięto niektóre stare. Starszy debuger jest nadal używany podczas międzyoperacyjnego (mieszanego natywnego i zarządzanego) debugowania w C++/CLI.
Ustawianie specyfikatorów formatu
Użyjemy następującego przykładowego kodu:
int main() {
int my_var1 = 0x0065;
int my_var2 = 0x0066;
int my_var3 = 0x0067;
}
Dodaj zmienną my_var1 do okna Watch podczas debugowania, Debug>Windows>Watch> Watch 1. Następnie kliknij prawym przyciskiem myszy zmienną i wybierz pozycję Wyświetlanie szesnastkowe. Teraz w oknie Obserwowanie jest wyświetlana wartość 0x0065. Aby wyświetlić tę wartość wyrażoną jako znak, a nie liczbę całkowitą, najpierw kliknij prawym przyciskiem myszy i usuń zaznaczenie opcji Wyświetlanie szesnastkowe. Następnie dodaj specyfikator formatu znaków , c w kolumnie Nazwa po nazwie zmiennej. W kolumnie Wartość jest teraz wyświetlana wartość 101 "e".
Możesz wyświetlić i wybrać z listy dostępnych specyfikatorów formatu, dołączając przecinek (,) do wartości w oknie Obserwowanie .
Specyfikatory formatu
W poniższych tabelach opisano specyfikatory formatu, których można użyć w programie Visual Studio. Specyfikatory pogrubione są obsługiwane tylko dla nowego debugera, a nie debugowania międzyoperacyjnego za pomocą języka C++/CLI.
| Specyfikator | Format | Oryginalna wartość zegarka | Wyświetlona wartość |
|---|---|---|---|
| d | liczba całkowita dziesiętna | 0x00000066 | 102 |
| o | nieznakowa liczba całkowita ósemkowa | 0x00000066 | 000000000146 |
| x h |
liczba całkowita szesnastkowa | 102 | 0xcccccccc |
| X H |
liczba całkowita szesnastkowa | 102 | 0xCCCCCCCC |
| xb Hb |
liczba całkowita szesnastkowa (bez wiodącego przedrostka 0x) | 102 | cccccccc |
| Xb Hb |
liczba całkowita szesnastkowa (bez wiodącego prefiksu 0x) | 102 | CCCCCCCC |
| b | liczba całkowita binarna bez znaku | 25 | 0b00000000000000000000000000011001 |
| Bb | liczba całkowita binarna bez znaku wiodącego 0b | 25 | 00000000000000000000000000011001 |
| e | notacja naukowa | 25000000 | 2.500000e+07 |
| g | krótsze wartości naukowe lub zmiennoprzecinkowe | 25000000 | 2.5e+07 |
| c | pojedynczy znak | 0x0065 | 101 „e” |
| s | const char* string (z cudzysłowami) | <lokalizacja> "hello world" | "witaj świecie" |
| Sb | const char* string (bez znaków cudzysłowu) | <lokalizacja> "hello world" | Cześć ludzie |
| s8 | Ciąg UTF-8 | <lokalizacja> "To jest filiżanka kawy UTF-8 â ̃•" | "To jest filiżanka ☕ kawy UTF-8 " |
| s8b | Ciąg UTF-8 (bez cudzysłowów) | <lokalizacja> "hello world" | Cześć ludzie |
| Su | Ciąg Unicode (kodowanie UTF-16) (z cudzysłowami) | <lokalizacja> L"hello world" | L"witaj świecie" u"hello world" |
| Subskrypcja | Ciąg Unicode (kodowanie UTF-16) (bez cudzysłowów) | <lokalizacja> L"hello world" | Cześć ludzie |
| bstr | Ciąg binarny BSTR (ze znakami cudzysłowu) | <lokalizacja> L"hello world" | L"witaj świecie" |
| środowisko | Blok środowiska (ciąg zakończony o podwójnej wartości null) | <location> L"=::=::\" | L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=... |
| s32 | Ciąg UTF-32 (ze znakami cudzysłowu) | <location> U"hello world" | U"hello world" |
| s32b | Ciąg UTF-32 (bez znaków cudzysłowu) | <location> U"hello world" | Cześć ludzie |
| en | wyliczenie | Sobota (6) | Sobota |
| Hv | Typ wskaźnika — wskazuje, że sprawdzana wartość wskaźnika jest wynikiem alokacji sterty tablicy, na przykład new int[3]. |
<lokalizacja>{<pierwszy członek>} | <location>{<first member>, <second member>, ...} |
| nie | Ukrywa adres pamięci wskaźnika do obiektu. | <lokalizacja>, {member=value...} | {member=wartość...} |
| Nd | Wyświetla tylko informacje o klasie bazowej, ignorując klasy pochodne |
(Shape*) square zawiera informacje o klasie bazowej i klasie pochodnej |
Wyświetla tylko informacje o klasie bazowej |
| hr | HRESULT lub Win32 kod błędu. Ten specyfikator nie jest już potrzebny dla HRESULTs, ponieważ debuger dekoduje je automatycznie. | S_OK | S_OK |
| wc | Flaga klasy okna | 0x0010 | WC_DEFAULTCHAR |
| Wm | Numery komunikatów systemu Windows | 16 | WM_CLOSE |
| nr | Ukryj element "Widok surowy" | ||
| nvo | Pokaż element "Widok surowy" tylko dla wartości liczbowych | ||
| ! | format surowy, ignorując dostosowania widoków dotyczących typów danych | <dostosowana reprezentacja> | 4 |
| dojście | Wyświetla informacje o uchwycie win32 | 0x000000000000009c | Wyświetla przydatne informacje o obsłudze, takiej jak identyfikator wątku itp. |
Uwaga / Notatka
Gdy specyfikator formatu hv jest obecny, debuger próbuje określić długość buforu i wyświetlić liczbę elementów. Ponieważ debuger nie zawsze może znaleźć dokładny rozmiar bufora dla tablicy, należy użyć specyfikatora rozmiaru (pBuffer,[bufferSize]), jeśli to możliwe. Specyfikator formatu hv jest przydatny, gdy rozmiar buforu nie jest łatwo dostępny.
Specyfikatory rozmiaru wskaźników traktowanych jako tablice
Jeśli masz wskaźnik do obiektu, który chcesz wyświetlić jako tablicę, możesz użyć liczby całkowitej lub wyrażenia, aby określić liczbę elementów tablicy.
| Specyfikator | Format | Oryginalna wartość zegarka | Wyświetlona wartość |
|---|---|---|---|
| n | Liczba dziesiętna lub szesnastkowa | pBuffer,[32] pBuffer,[0x20] |
Wyświetla pBuffer jako tablicę elementów 32. |
| [exp] | Prawidłowe wyrażenie języka C++, które daje w wyniku liczbę całkowitą. | pBuffer,[bufferSize] | Wyświetla pBuffer jako tablicę bufferSize elementów. |
| expand(n) | Prawidłowe wyrażenie języka C++, które daje w wyniku liczbę całkowitą | pBuffer, expand(2) | Wyświetla trzeci element elementu pBuffer |
Specyfikatory formatu na potrzeby debugowania międzyoperacyjnego za pomocą języka C++/interfejsu wiersza polecenia
| Specyfikator | Format | Oryginalna wartość zegarka | Wyświetlona wartość |
|---|---|---|---|
| o | nieznakowa liczba całkowita ósemkowa | 0xF065 | 0170145 |
| x X |
Liczba całkowita szesnastkowa | 61541 | 0x0000f065 |
| c | pojedynczy znak | <lokalizacja> | 101 „e” |
| s | const char* (z cudzysłowami) | <lokalizacja> | "witaj świecie" |
| Su | const wchar_t* const char16_t* (z cudzysłowami) |
<lokalizacja> | L"witaj świecie" |
| Subskrypcja | const wchar_t* const char16_t* |
<lokalizacja> | Cześć ludzie |
| s8 | const char* (z cudzysłowami) | <lokalizacja> | "witaj świecie" |
| hr | HRESULT lub Win32 kod błędu. Ten specyfikator nie jest już potrzebny dla HRESULTs, ponieważ debuger dekoduje je automatycznie. |
S_OK | S_OK |
| wc | Flaga klasy okna | 0x00000040, | WC_DEFAULTCHAR |
| Wm | Numery komunikatów systemu Windows | 0x0010 | WM_CLOSE |
| ! | format surowy, ignorując dostosowania widoku typu danych | <dostosowana reprezentacja> | 4 |
D, e, f, g, h, i, l, m, ma, mb, md, mq, mu, mw i u to specyfikatory dla kodu natywnego i C++/CLI wymagające debugera w wersji starszej, który nie jest obsługiwany w programie Visual Studio 2022 lub nowszych wersjach.
Specyfikatory pogrubione są obsługiwane tylko w przypadku debugowania kodu natywnego i C++/CLI. Te specyfikatory wymagają starszego debugera, który jest określony przy użyciu Zarządzanego Trybu Zgodności.
| Specyfikator | Format | Oryginalna wartość zegarka | Wyświetlona wartość |
|---|---|---|---|
|
d ja |
liczba całkowita dziesiętna ze znakiem | 0xF000F065 | -268373915 |
| u | nieznakowana liczba całkowita w dziesiętnym systemie | 0x0065 | 101 |
| o | nieznakowa liczba całkowita ósemkowa | 0xF065 | 0170145 |
| x X |
Liczba całkowita szesnastkowa | 61541 | 0x0000f065 |
|
l h |
długi lub krótki prefiks dla: d, i, u, o, x, X | 00406042 | 0x0c22 |
| f | ze znakiem zmiennoprzecinkowa | (3./2.), f | 1.500000 |
| e | podpisana notacja naukowa | (3.0/2.0) | 1.500000e+000 |
| g | podpisana zmiennoprzecinkowa lub podpisana notacja naukowa, które jest krótsze |
(3.0/2.0) | 1.5 |
| c | pojedynczy znak | <lokalizacja> | 101 „e” |
| s | const char* (z cudzysłowami) | <lokalizacja> | "witaj świecie" |
| Su | const wchar_t* const char16_t* (z cudzysłowami) |
<lokalizacja> | L"witaj świecie" |
| Subskrypcja | const wchar_t* const char16_t* |
<lokalizacja> | Cześć ludzie |
| s8 | const char* (z cudzysłowami) | <lokalizacja> | "witaj świecie" |
| hr | HRESULT lub Win32 kod błędu. Ten specyfikator nie jest już potrzebny dla HRESULTs, ponieważ debuger dekoduje je automatycznie. |
S_OK | S_OK |
| wc | Flaga klasy okna | 0x00000040, | WC_DEFAULTCHAR |
| Wm | Numery komunikatów systemu Windows | 0x0010 | WM_CLOSE |
| ! | format surowy, ignorując dostosowania widoku typu danych | <dostosowana reprezentacja> | 4 |
Specyfikatory formatu dla lokalizacji pamięci w debugowaniu interop za pomocą C++/CLI
W poniższej tabeli opisano symbole formatowania używane dla lokalizacji pamięci. Można użyć specyfikatora lokalizacji pamięci z dowolną wartością lub wyrażeniem, które daje w wyniku lokalizację.
Specyfikatory pogrubione są obsługiwane tylko w przypadku debugowania kodu natywnego i C++/CLI. Wymaga to starszego debugera określonego przy użyciu trybu zgodności zarządzanej.
| Symbol | Format | Oryginalna wartość zegarka | Wyświetlona wartość |
|---|---|---|---|
| ma | 64 znaki ASCII | 0x0012ffac | 0x0012ffac .4...0...". 0W&....... 1W&.0.:W.. 1....".. 1.JO&.1.2.".". 1...0y.... 1 |
| m | 16 bajtów w systemie szesnastkowym, a następnie 16 znaków ASCII | 0x0012ffac | 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00.4...0...". 0W&.. |
| Mb | 16 bajtów w szesnastkowym, a następnie 16 znaków ASCII | 0x0012ffac | 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00.4...0...". 0W&.. |
| mw | 8 wyrazów | 0x0012ffac | 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000 |
| md | 4 dwusłowa | 0x0012ffac | 0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
| mq | 2 czworokąt | 0x0012ffac | 0x0012ffac 7ffdf00000000000 5f441a790012fdd4 |
| mu | 2-bajtowe znaki (Unicode) | 0x0012ffac | 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000 0000 |
Specyfikator rozmiaru wskaźników jako tablic w debugowaniu międzyoperacyjnym za pomocą języka C++/CLI
Jeśli masz wskaźnik do obiektu, który chcesz wyświetlić jako tablicę, możesz użyć liczby całkowitej, aby określić liczbę elementów tablicy.
| Specyfikator | Format | Expression | Wyświetlona wartość |
|---|---|---|---|
| n | Liczba całkowita dziesiętna | pBuffer[32] | Wyświetla pBuffer jako tablicę 32-elementową. |