Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda dapat mengubah format di mana nilai ditampilkan di jendela Watch, Autos, dan Locals dengan menggunakan penentu format.
Anda juga dapat menggunakan penentu format di jendela Segera , jendela Perintah , di titik jejak, dan bahkan di jendela sumber. Jika Anda menjeda ekspresi di jendela tersebut, hasilnya akan muncul di DataTip. Tampilan DataTip mencerminkan penentu format.
Nota
Saat debugger asli Visual Studio berubah menjadi mesin debugging baru, beberapa penentu format baru ditambahkan dan beberapa yang lama dihapus. Debugger yang lebih lama masih digunakan saat Anda melakukan debugging interop (campuran native dan managed) dengan C++/CLI.
Mengatur spesifikator format
Kami akan menggunakan contoh kode berikut:
int main() {
int my_var1 = 0x0065;
int my_var2 = 0x0066;
int my_var3 = 0x0067;
}
my_var1 Tambahkan variabel ke jendela Watch saat men-debug, Debug>Windows>Watch>Watch 1. Selanjutnya, klik kanan variabel dan pilih Tampilan Heksadesimal. Sekarang jendela Watch menampilkan nilai 0x0065. Untuk melihat nilai ini dinyatakan sebagai karakter daripada bilangan bulat, pertama-tama klik kanan dan batal pilih 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 Watch .
Spesifikasi format
Tabel berikut ini menjelaskan penentu format yang bisa Anda gunakan di Visual Studio. Penentu dalam huruf tebal hanya didukung untuk digunakan dengan debugger baru, dan bukan untuk penelusuran kesalahan interop dengan C++/CLI.
| Spesifikator | Rancangan | Nilai Jam Tangan Asli | Nilai Ditampilkan |
|---|---|---|---|
| d | bilangan bulat desimal | 0x00000066 | 102 |
| o | bilangan bulat oktal yang tidak ditandatangani | 0x00000066 | 000000000146 |
| x h |
bilangan bulat heksadesimal | 102 | 0xcccccccc |
| X H |
bilangan bulat heksadesimal | 102 | 0xCCCCCCCC |
| Xb Hb |
bilangan bulat heksadesimal (tanpa leading 0x) | 102 | cccccccc |
| Xb Hb |
bilangan bulat heksadesimal (tanpa leading 0x) | 102 | CCCCCCCC |
| b | bilangan bulat biner yang tidak ditandatangani | Dua puluh lima | 0b00000000000000000000000000011001 |
| Bb | bilangan bulat biner yang tidak ditandatangani(tanpa 0b di depan) | Dua puluh lima | 00000000000000000000000000011001 |
| e | notasi ilmiah | 25000000 | 2.500000e+07 |
| g | versi singkat dari notasi ilmiah atau floating point | 25000000 | 2.5e+07 |
| c | karakter tunggal | 0x0065 | 101 'e' |
| s | const char* string (dengan tanda kutip) | <lokasi> "halo dunia" | "halo dunia" |
| Sb | const char* string (tanpa tanda kutip) | <Lokasi> "Halo Dunia" | Halo dunia |
| s8 | String UTF-8 | <lokasi> "Ini adalah cangkir kopi UTF-8 ☕" | "Ini adalah cangkir ☕ kopi UTF-8" |
| s8b | String UTF-8 (tanpa tanda kutip) | <lokasi> "halo dunia" | Halo dunia |
| Su | String Unicode (pengodean UTF-16) (dengan tanda kutip) | <location> L"hello world" | L"halo dunia" "halo dunia" |
| Subkategori | String Unicode (pengodean UTF-16) (tanpa tanda kutip) | <location> L"hello world" | Halo dunia |
| bstr | String biner BSTR (dengan tanda kutip) | <location> L"hello world" | L"halo dunia" |
| env | Blok lingkungan (string yang diakhiri dengan null ganda) | <location> L"=::=:::\\" | L"=::=:\\\0=C:=C:\windows\\system32\0ALLUSERSPROFILE=... |
| s32 | String UTF-32 (dengan tanda kutip) | <location> U"hello world" | U"halo dunia" |
| s32b | String UTF-32 (tanpa tanda kutip) | <location> U"hello world" | Halo dunia |
| En | enum | Sabtu(6) | Sabtu |
| Hv | Jenis pointer - menunjukkan bahwa nilai pointer yang diperiksa adalah hasil dari alokasi heap sebuah array, misalnya, new int[3]. |
<lokasi>{<anggota pertama>} | <lokasi>{<anggota pertama>, <anggota kedua>, ...} |
| Na | Menyembunyikan alamat memori dari penunjuk ke objek. | <lokasi>, {member=value...} | {member=value...} |
| Nd | Hanya menampilkan informasi kelas dasar, mengabaikan kelas turunan |
(Shape*) square termasuk kelas dasar dan informasi kelas turunan |
Hanya menampilkan informasi kelas dasar |
| hr | Kode kesalahan HRESULT atau Win32. Penentu ini tidak lagi diperlukan untuk HRESULT karena debugger mendekodenya secara otomatis. | S_OK | S_OK |
| Wc | Penanda kelas jendela | 0x0010 | WC_DEFAULTCHAR |
| Wm | Nomor pesan Windows | 16 | WM_CLOSE |
| Nr | Sembunyikan item "Tampilan Mentah" | ||
| nvo | Perlihatkan item "Tampilan Baku" hanya untuk nilai numerik | ||
| ! | format mentah, mengabaikan kustomisasi tampilan jenis data apa pun | <representasi yang disesuaikan> | 4 |
| handel | Menampilkan informasi tentang handle win32 | 0x000000000000009c | Menampilkan informasi yang berguna tentang handle seperti ID thread, dll. |
Nota
Ketika penentu format hv ada, debugger mencoba menentukan panjang buffer dan menampilkan jumlah elemen tersebut. Karena tidak selalu mungkin bagi debugger untuk menemukan ukuran buffer array yang tepat, Anda harus menggunakan penentu (pBuffer,[bufferSize]) ukuran jika memungkinkan. Penentu format hv berguna ketika ukuran buffer tidak tersedia.
Penentu ukuran untuk pointer sebagai array
Jika Anda memiliki penunjuk ke objek yang ingin Anda lihat sebagai array, Anda bisa menggunakan bilangan bulat atau ekspresi untuk menentukan jumlah elemen array.
| Spesifikator | Rancangan | Nilai Jam Tangan Asli | Nilai Ditampilkan |
|---|---|---|---|
| n | Bilangan bulat desimal atau heksadesimal | pBuffer,[32] pBuffer,[0x20] |
pBuffer Ditampilkan sebagai array elemen 32. |
| [exp] | Ekspresi C++ valid yang mengevaluasi ke bilangan bulat. | pBuffer,[bufferSize] | Menampilkan pBuffer sebagai elemen array bufferSize. |
| expand(n) | Ekspresi C++ valid yang mengevaluasi ke bilangan bulat | pBuffer, expand(2) | Menampilkan elemen ketiga dari pBuffer |
Penentu format untuk debugging interopabilitas dengan C++/CLI
| Pengatur Spesifikasi | Rancangan | Nilai Jam Tangan Asli | Nilai Ditampilkan |
|---|---|---|---|
| o | bilangan bulat oktal yang tidak ditandatangani | 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" |
| Subkategori | const wchar_t* const char16_t* |
<lokasi> | Halo dunia |
| s8 | const char* (dengan tanda kutip) | <lokasi> | "halo dunia" |
| hr | Kode kesalahan HRESULT atau Win32. Penentu ini tidak lagi diperlukan untuk HRESULT karena debugger mendekodenya secara otomatis. |
S_OK | S_OK |
| wc | Penanda kelas jendela | 0x00000040, | WC_DEFAULTCHAR |
| wm | Nomor pesan Windows | 0x0010 | WM_CLOSE |
| ! | format mentah, mengabaikan kustomisasi tampilan jenis data apa pun | <representasi yang disesuaikan> | 4 |
Kode d, e, f, g, h, i, l, m, ma, mb, md, mq, mu, mw, dan u specifier untuk kode asli dan C++/CLI memerlukan debugger lama, yang tidak didukung dalam Visual Studio 2022 atau versi yang lebih baru.
Spesifikator dalam huruf tebal hanya didukung untuk debug kode asli dan C++/CLI. Penentu ini memerlukan debugger warisan, yang ditentukan menggunakan Mode Kompatibilitas Terkelola.
| Spesifikator | Rancangan | Nilai Jam Tangan Asli | Nilai Ditampilkan |
|---|---|---|---|
|
d saya |
bilangan bulat desimal yang ditandatangani | 0xF000F065 | -268373915 |
| u | bilangan bulat desimal yang tidak ditandatangani | 0x0065 | 101 |
| o | bilangan bulat oktal yang tidak ditandatangani | 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 mengambang yang ditandatangani | (3./2.), f | 1.500000 |
| e | notasi ilmiah yang ditandatangani | (3.0/2.0) | 1.500000e+000 |
| g | titik mengambang yang ditandatangani atau notasi ilmiah yang ditandatangani, mana 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" |
| Subkategori | const wchar_t* const char16_t* |
<lokasi> | Halo dunia |
| s8 | const char* (dengan tanda kutip) | <lokasi> | "halo dunia" |
| hr | Kode kesalahan HRESULT atau Win32. Penentu ini tidak lagi diperlukan untuk HRESULT karena debugger mendekodenya secara otomatis. |
S_OK | S_OK |
| wc | Penanda kelas jendela | 0x00000040, | WC_DEFAULTCHAR |
| wm | Nomor pesan Windows | 0x0010 | WM_CLOSE |
| ! | format mentah, mengabaikan kustomisasi tampilan jenis data apa pun | <representasi yang disesuaikan> | 4 |
Penentu format untuk alamat memori dalam debugging 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 menunjuk ke lokasi.
Spesifikator dalam huruf tebal hanya didukung untuk debug kode asli dan C++/CLI. Ini memerlukan debugger warisan, yang ditentukan menggunakan Mode Kompatibilitas Terkelola.
| Symbol | Rancangan | Nilai Jam Tangan Asli | Nilai 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 kata sandi ganda | 0x0012ffac | 0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
| mq | 2 quadwords | 0x0012ffac | 0x0012ffac 7ffdf00000000000 5f441a790012fdd4 |
| mu | Karakter berukuran 2 byte (Unicode) | 0x0012ffac | 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000 |
Penentu ukuran untuk pointer sebagai array dalam debugging interop dengan C++/CLI
Jika Anda memiliki penunjuk ke objek yang ingin Anda lihat sebagai array, Anda dapat menggunakan bilangan bulat untuk menentukan jumlah elemen array.
| Spesifikator | Rancangan | Expression | Nilai Ditampilkan |
|---|---|---|---|
| n | Bilangan bulat desimal | pBuffer[32] | Menampilkan pBuffer sebagai array berisi 32 elemen. |