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"salam dunia" | 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
| Spesifikator | 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.
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. |