Penentu format untuk C++ di debugger Visual Studio
Anda dapat mengubah format tempat nilai ditampilkan di jendela Pengawasan, Otomatis, dan Lokal dengan menggunakan penentu format.
Anda juga dapat menggunakan penentu format di jendela Langsung, jendela Perintah, di titik pelacakan, dan bahkan di jendela sumber. Jika Anda menjeda ekspresi di jendela tersebut, hasilnya akan muncul di DataTip. Tampilan DataTip mencerminkan penentu format.
Catatan
Ketika debugger asli Visual Studio berubah menjadi mesin penelusuran kesalahan baru, beberapa penentu format baru ditambahkan dan beberapa yang lama dihapus. Debugger yang lebih lama masih digunakan saat Anda melakukan penelusuran kesalahan interop (campuran asli dan terkelola) dengan C++/CLI.
Menetapkan penentu format
Kita akan menggunakan contoh kode berikut:
int main() {
int my_var1 = 0x0065;
int my_var2 = 0x0066;
int my_var3 = 0x0067;
}
Tambahkan variabel my_var1
ke jendela Pengawasan saat penelusuran kesalahan, Debug>Windows>Pengawasan>Pengawasan 1. Selanjutnya, klik kanan variabel dan pilih Tampilan Heksadesimal. Sekarang jendela Pengawasan menampilkan nilai 0x0065. Untuk melihat nilai ini dinyatakan sebagai karakter dan bukan bilangan bulat, pertama-tama klik kanan dan batalkan pilihan Tampilan Heksadesimal. Kemudian tambahkan penentu format karakter , c di kolom Nama setelah nama variabel. Kolom Nilai sekarang memperlihatkan 101 'e'.
Anda dapat melihat dan memilih dari daftar penentu format yang tersedia dengan menambahkan koma (,) ke nilai di jendela Pengawasan.
Penentu format
Tabel berikut ini menjelaskan penentu format yang dapat digunakan di Visual Studio. Penentu yang bercetak tebal hanya didukung untuk debugger baru, dan bukan untuk penelusuran kesalahan interop dengan C++/CLI.
Penentu | Format | Nilai Pengawasan Asli | Nilai yang Ditampilkan |
---|---|---|---|
d | bilangan bulat desimal | 0x00000066 | 102 |
o | bilangan bulat oktal tidak bertanda | 0x00000066 | 000000000146 |
x h |
bilangan bulat heksadesimal | 102 | 0xcccccccc |
X H |
bilangan bulat heksadesimal | 102 | 0xCCCCCCCC |
xb hb |
bilangan bulat heksadesimal (tanpa awalan 0x) | 102 | cccccccc |
Xb Hb |
bilangan bulat heksadesimal (tanpa awalan 0x) | 102 | CCCCCCCC |
b | bilangan bulat biner tidak bertanda | 25 | 0b00000000000000000000000000011001 |
bb | bilangan bulat biner yang tidak bertanda (tanpa awalan 0b) | 25 | 00000000000000000000000000011001 |
e | notasi ilmiah | 25000000 | 2.500000e+07 |
g | lebih pendek dari ilmiah atau titik ambang | 25000000 | 2.5e+07 |
c | karakter tunggal | 0x0065 | 101 'e' |
s | string const char* (dengan tanda kutip) | <location> "halo dunia" | "halo dunia" |
sb | string const char* (tanpa tanda kutip) | <location> "halo dunia" | halo dunia |
s8 | String UTF-8 | <location> "Ini adalah secangkir kopi ☕ UTF-8" | "Ini adalah secangkir kopi ☕ UTF-8" |
s8b | String UTF-8 (tanpa tanda kutip) | <location> "halo dunia" | halo dunia |
su | String Unicode (pengodean UTF-16) (dengan tanda kutip) | <location> L"halo dunia" | L"halo dunia" u"halo dunia" |
sub | String Unicode (pengodean UTF-16) (tanpa tanda kutip) | <location> L"halo dunia" | halo dunia |
bstr | String biner BSTR (dengan tanda kutip) | <location> L"halo dunia" | L"halo dunia" |
env | Blok lingkungan (string diakhiri dengan dua null) | <location> L"=::=::\\" | L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=... |
s32 | String UTF-32 (dengan tanda kutip) | <location> U"halo dunia" | U"halo dunia" |
s32b | String UTF-32 (tanpa tanda kutip) | <location> U"halo dunia" | halo dunia |
en | enum | Sabtu(6) | Sabtu |
hv | Jenis pointer - menunjukkan bahwa nilai pointer yang diperiksa adalah hasil dari alokasi tumpukan array, misalnya, new int[3] . |
<location>{<first member>} | <location>{<first member>, <second member>, ...} |
na | Menekan alamat memori pointer ke objek. | <location>, {member=value...} | {member=value...} |
nd | Hanya menampilkan informasi kelas dasar, mengabaikan kelas turunan | (Shape*) square termasuk informasi kelas dasar dan kelas turunan |
Hanya menampilkan informasi kelas dasar |
jam | Kode kesalahan HRESULT atau Win32. Penentu ini tidak lagi diperlukan untuk HRESULT karena debugger mendekodenya secara otomatis. | S_OK | S_OK |
wc | Bendera kelas jendela | 0x0010 | WC_DEFAULTCHAR |
wm | Nomor pesan jendela | 16 | WM_CLOSE |
nr | Sembunyikan item "Tampilan Mentah" | ||
nvo | Tampilkan item "Tampilan Mentah" hanya untuk nilai numerik | ||
! | format mentah, mengabaikan kustomisasi tampilan jenis data apa pun | <customized representation> | 4 |
menangani | Menampilkan informasi tentang handel win32 | 0x000000000000009c | Menampilkan informasi yang berguna tentang handel seperti ID utas, dll. |
Catatan
Ketika penentu format hv ada, debugger mencoba menentukan panjang buffer dan menampilkan jumlah elemen tersebut. Karena debugger tidak selalu dapat menemukan ukuran buffer array yang tepat, Anda harus menggunakan penentu ukuran (pBuffer,[bufferSize])
jika memungkinkan. Penentu format hv berguna ketika ukuran buffer tidak tersedia.
Penentu ukuran untuk pointer sebagai array
Jika memiliki pointer ke objek yang ingin ditampilkan sebagai array, Anda dapat menggunakan bilangan bulat atau ekspresi untuk menentukan jumlah elemen array.
Penentu | Format | Nilai Pengawasan Asli | Nilai yang Ditampilkan |
---|---|---|---|
n | Bilangan bulat desimal atau heksadesimal | pBuffer,[32] pBuffer,[0x20] |
Menampilkan pBuffer sebagai array 32 elemen. |
[exp] | Ekspresi C++ valid yang mengevaluasi ke bilangan bulat. | pBuffer,[bufferSize] | Menampilkan pBuffer sebagai array elemenbufferSize . |
expand(n) | Ekspresi C++ valid yang mengevaluasi ke bilangan bulat | pBuffer, luaskan(2) | Menampilkan elemen ketiga dari pBuffer |
Penentu format untuk penelusuran kesalahan interop dengan C++/CLI
Penentu | Format | Nilai Pengawasan Asli | Nilai yang Ditampilkan |
---|---|---|---|
o | bilangan bulat oktal tidak bertanda | 0xF065 | 0170145 |
x X |
Bilangan bulat heksadesimal | 61541 | 0x0000f065 |
c | karakter tunggal | <Lokasi> | 101 'e' |
s | const char* (dengan tanda kutip) | <Lokasi> | "halo dunia" |
su | const wchar_t* const char16_t* (dengan tanda kutip) |
<Lokasi> | L"halo dunia" |
sub | const wchar_t* const char16_t* |
<Lokasi> | halo dunia |
s8 | const char* (dengan tanda kutip) | <Lokasi> | "halo dunia" |
jam | Kode kesalahan HRESULT atau Win32. Penentu ini tidak lagi diperlukan untuk HRESULT karena debugger mendekodenya secara otomatis. |
S_OK | S_OK |
wc | Bendera kelas jendela | 0x00000040, | WC_DEFAULTCHAR |
wm | Nomor pesan jendela | 0x0010 | WM_CLOSE |
! | format mentah, mengabaikan kustomisasi tampilan jenis data apa pun | <customized representation> | 4 |
Penentu d, e, f, g, h, i, l, m, ma, mb, md, mq, mu, mw, dan u untuk kode C++/CLI dan asli memerlukan debugger lama, yang tidak didukung di Visual Studio 2022 atau versi yang lebih baru.
Penentu bercetak tebal hanya didukung untuk penelusuran kesalahan kode C++/CLI dan asli. Penentu tersebut memerlukan debugger lama, yang ditentukan menggunakan Mode Kompatibilitas Terkelola.
Penentu | Format | Nilai Pengawasan Asli | Nilai yang Ditampilkan |
---|---|---|---|
d i |
bilangan bulat desimal bertanda | 0xF000F065 | -268373915 |
u | bilangan bulat desimal tidak bertanda | 0x0065 | 101 |
o | bilangan bulat oktal tidak bertanda | 0xF065 | 0170145 |
x X |
Bilangan bulat heksadesimal | 61541 | 0x0000f065 |
l h |
awalan panjang atau pendek untuk: d, i, u, o, x, X | 00406042 | 0x0c22 |
f | titik ambang bertanda | (3./2.), f | 1.500000 |
e | notasi ilmiah bertanda | (3.0/2.0) | 1.500000e+000 |
g | titik ambang bertanda atau notasi ilmiah bertanda, mana pun yang lebih pendek |
(3.0/2.0) | 1.5 |
c | karakter tunggal | <Lokasi> | 101 'e' |
s | const char* (dengan tanda kutip) | <Lokasi> | "halo dunia" |
su | const wchar_t* const char16_t* (dengan tanda kutip) |
<Lokasi> | L"halo dunia" |
sub | const wchar_t* const char16_t* |
<Lokasi> | halo dunia |
s8 | const char* (dengan tanda kutip) | <Lokasi> | "halo dunia" |
jam | Kode kesalahan HRESULT atau Win32. Penentu ini tidak lagi diperlukan untuk HRESULT karena debugger mendekodenya secara otomatis. |
S_OK | S_OK |
wc | Bendera kelas jendela | 0x00000040, | WC_DEFAULTCHAR |
wm | Nomor pesan jendela | 0x0010 | WM_CLOSE |
! | format mentah, mengabaikan kustomisasi tampilan jenis data apa pun | <customized representation> | 4 |
Penentu format untuk lokasi memori dalam penelusuran kesalahan interop dengan C++/CLI
Tabel berikut ini menjelaskan simbol pemformatan yang digunakan untuk lokasi memori. Anda dapat menggunakan penentu lokasi memori dengan nilai atau ekspresi apa pun yang mengevaluasi ke suatu lokasi.
Penentu bercetak tebal hanya didukung untuk penelusuran kesalahan kode C++/CLI dan asli. Penentu tersebut memerlukan debugger lama, yang ditentukan menggunakan Mode Kompatibilitas Terkelola.
Simbol | Format | Nilai Pengawasan Asli | Nilai yang Ditampilkan |
---|---|---|---|
ma | 64 karakter ASCII | 0x0012ffac | 0x0012ffac .4...0...". 0W&....... 1W&.0.:W.. 1....".. 1.JO&.1.2..".. 1...0y.... 1 |
m | 16 byte dalam heksadesimal, diikuti oleh 16 karakter ASCII | 0x0012ffac | 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...". 0W&.. |
mb | 16 byte dalam heksadesimal, diikuti oleh 16 karakter ASCII | 0x0012ffac | 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...". 0W&.. |
mw | 8 kata | 0x0012ffac | 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000 |
/md | 4 dua kata | 0x0012ffac | 0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
mq | 2 empat kata | 0x0012ffac | 0x0012ffac 7ffdf00000000000 5f441a790012fdd4 |
Mu | Karakter 2-byte (Unicode) | 0x0012ffac | 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000 |
Penentu ukuran untuk pointer sebagai array dalam penelusuran kesalahan interop dengan C++/CLI
Jika memiliki pointer ke objek yang ingin ditampilkan sebagai array, Anda dapat menggunakan bilangan bulat untuk menentukan jumlah elemen array.
Penentu | Format | Expression | Nilai yang Ditampilkan |
---|---|---|---|
n | Bilangan bulat desimal | pBuffer[32] | Menampilkan pBuffer sebagai array 32-elemen. |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk