Menggunakan Jendela Pengawas - WinDbg (Klasik)
Jendela Watch menampilkan informasi tentang variabel global, variabel lokal, dan register. Anda dapat menyesuaikan jendela ini untuk menampilkan item yang Sedang Anda lacak.
Membuka Jendela Pengawas
Untuk membuka atau beralih ke jendela Watch, di jendela WinDbg, pada menu Tampilan , klik Tonton.
Anda juga dapat menekan ALT+2 atau mengklik tombol Watch (ALT+2) pada toolbar:
ALT+SHIFT+2 akan menutup jendela Pengawasan.
Cuplikan layar berikut menunjukkan contoh jendela Watch.
Jendela Watch dapat berisi empat kolom. Kolom Nama dan Nilai selalu ditampilkan, dan kolom Tipe dan Lokasi bersifat opsional. Untuk menampilkan kolom Tipe dan Lokasi , klik tombol Typecast dan Lokasi , masing-masing, pada toolbar.
Di jendela Watch, Anda dapat melakukan hal berikut:
Untuk menambahkan variabel ke jendela Watch, pilih sel kosong pertama di kolom Nama , ketik nama variabel, lalu tekan ENTER. Pisahkan nama modul dari variabel dengan tanda seru (!). Jika Anda tidak menentukan modul, modul saat ini akan digunakan. Untuk memasukkan alamat di bidang Nama , alamat harus dimulai dengan digit desimal (jika perlu, gunakan awalan 0x).
Jika nama variabel yang Anda masukkan ditentukan dalam cakupan fungsi saat ini, nilainya muncul di kolom Nilai . Jika tidak ditentukan, kolom Nilaimenampilkan "Kesalahan: Tidak dapat mendapatkan nilai".
Bahkan jika variabel tidak ditentukan, akan berguna untuk menambahkannya ke jendela Watch. Jika penghitung program memasukkan fungsi di mana variabel nama ini ditentukan, nilainya muncul di jendela pada saat itu.
Untuk menghapus variabel dari jendela Watch, klik dua kali namanya, tekan DELETE, lalu tekan ENTER. Anda juga dapat mengganti nama lama dengan nama baru dengan mengklik dua kali nama lama, mengetikkan nama baru, lalu menekan ENTER.
Jika variabel adalah struktur data, kotak centang muncul di samping namanya. Untuk memperluas dan menciutkan tampilan anggota struktur, pilih atau kosongkan kotak centang.
Bilangan bulat tipe int ditampilkan sebagai nilai desimal; bilangan bulat tipe UINT ditampilkan dalam radiks saat ini. Untuk mengubah radix saat ini, gunakan perintah n (Atur Basis Angka) di jendela Perintah Debugger.
Untuk mengubah nilai variabel lokal, klik dua kali sel Nilainya . Masukkan nilai baru, atau edit nilai lama. (Perintah potong, salin, dan tempel tersedia untuk digunakan untuk pengeditan.) Nilai yang Anda masukkan dapat menyertakan ekspresi C++apa pun. Setelah Anda memasukkan nilai baru atau mengedit nilai lama, Anda dapat menekan ENTER untuk menyimpan nilai baru atau menekan ESC untuk membuangnya. Jika Anda mengirimkan nilai yang tidak valid, nilai lama akan muncul kembali setelah Anda menekan ENTER.
Bilangan bulat tipe int ditampilkan sebagai nilai desimal; bilangan bulat tipe UINT ditampilkan dalam radiks saat ini. Untuk mengubah radix saat ini, gunakan perintah n (Atur Basis Angka) di jendela Perintah Debugger.
Kolom Jenis (jika ditampilkan di jendela Watch) menampilkan jenis data saat ini dari setiap variabel. Setiap variabel ditampilkan dalam format yang tepat untuk jenis datanya sendiri. Struktur data memiliki nama jenisnya di kolom Jenis . Jenis variabel lain menampilkan "Masukkan jenis baru" di kolom ini.
Jika Anda mengklik dua kali "Masukkan jenis baru", Anda dapat mentransmisikan jenis dengan memasukkan jenis data baru. Transmisi ini mengubah tampilan variabel ini saat ini hanya di jendela Pengawasan; ini tidak mengubah apa pun di debugger atau pada komputer target. Selain itu, jika Anda memasukkan nilai baru di kolom Nilai , teks yang Anda masukkan akan diurai berdasarkan jenis simbol aktual, bukan jenis baru yang mungkin telah Anda masukkan di kolom Jenis . Jika Anda menutup dan membuka kembali jendela Watch, Anda akan kehilangan perubahan jenis data.
Anda juga dapat memasukkan perintah ekstensi di kolom Jenis . Debugger akan meneruskan alamat simbol ke ekstensi ini, dan akan menampilkan output yang dihasilkan dalam serangkaian baris yang dapat diciutkan di bawah baris saat ini. Misalnya, jika simbol dalam baris ini adalah alamat yang valid untuk blok lingkungan utas, Anda dapat memasukkan !teb di kolom Jenis untuk menjalankan ekstensi !teb pada alamat simbol ini.
Kolom Lokasi (jika ditampilkan di jendela Pengawasan) menampilkan offset setiap anggota struktur data.
Selain variabel, Anda juga dapat memantau item berikut di jendela Watch:
- Register. Saat Anda menambahkan register ke jendela Watch, awali namanya dengan tanda@ (). Tidak seperti variabel, Anda tidak dapat mengubah nilai register melalui jendela Watch.
- Vtable yang berisi pointer fungsi. Saat Vtable muncul di jendela Watch, Anda dapat menelusuri entri fungsi dalam tabel. Jika Vtable terkandung dalam kelas dasar yang menunjuk ke implementasi turunan, notasi _vtcast_Class ditampilkan untuk menunjukkan anggota yang ditambahkan karena kelas turunan. Anggota ini berkembang seperti jenis kelas turunan.
- Nilai yang dikembalikan dari fungsi ekstensi, seperti _EFN_GetPoolData.
Tidak seperti jendela Lokal, jendela Watch tidak terpengaruh oleh perubahan pada konteks register. Di jendela Watch, Anda hanya dapat melihat dan memodifikasi variabel yang ditentukan dalam cakupan penghitung program saat ini.
Jika Anda membuka ruang kerja baru, konten jendela Watch akan dibuang dan diganti dengan yang ada di ruang kerja baru.
Bilah Alat dan Menu Pintasan
Jendela Watch memiliki toolbar yang berisi dua tombol (Typecast dan Locations) dan menu pintasan dengan perintah tambahan. Untuk mengakses menu, klik kanan bilah judul jendela atau klik ikon di dekat sudut kanan atas jendela:
Toolbar dan menu berisi tombol dan perintah berikut:
(Bilah alat dan menu) Typecast mengaktifkan dan menonaktifkan tampilan kolom Jenis .
(Bilah alat dan menu) Lokasi mengaktifkan dan menonaktifkan tampilan kolom Lokasi .
(Hanya menu) Tampilkan nilai 16-bit karena Unicode menampilkan string Unicode di jendela ini. Perintah ini mengaktifkan dan menonaktifkan pengaturan global yang memengaruhi jendela Lokal, jendela Watch, dan output perintah debugger. Perintah ini setara dengan menggunakan perintah .enable_unicode (Aktifkan Tampilan Unicode).
(Hanya menu) Selalu tampilkan angka dalam radix default menyebabkan bilangan bulat ditampilkan dalam radiks default alih-alih selalu menampilkannya dalam format desimal. Perintah ini mengaktifkan dan menonaktifkan pengaturan global yang memengaruhi jendela Lokal, jendela Watch, dan output perintah debugger. Perintah ini setara dengan menggunakan perintah .force_radix_output (Gunakan Radix untuk Bilangan Bulat ).
Catatan Perintah Selalu tampilkan angka dalam radix default tidak memengaruhi bilangan bulat panjang. Bilangan bulat panjang ditampilkan dalam format desimal kecuali perintah .enable_long_status (Aktifkan Tampilan Bilangan Bulat Panjang) digunakan. Perintah .enable_long_status memengaruhi tampilan di jendela Lokal, jendela Watch, dan output perintah debugger. Tidak ada yang setara untuk perintah ini di menu di jendela Watch.
(Hanya menu) Buka jendela memori untuk nilai yang dipilih membuka jendela Memori tertampung baru yang menampilkan memori yang dimulai dari alamat ekspresi yang dipilih.
(Hanya menu) Panggil dt untuk nilai memori yang dipilih menjalankan perintah dt (Jenis Tampilan) dengan simbol yang dipilih sebagai parameternya. Hasilnya muncul di jendela Perintah Debugger. Opsi -n secara otomatis digunakan untuk membedakan simbol dari alamat heksadesimal. Tidak ada opsi lain yang digunakan. Perhatikan bahwa konten yang dihasilkan menggunakan pilihan menu ini identik dengan konten yang dihasilkan saat menjalankan perintah dt dari baris perintah, tetapi formatnya sedikit berbeda.
(Hanya menu) Bilah alat mengaktifkan dan menonaktifkan bilah alat.
(Hanya menu) Dock atau Undock menyebabkan jendela masuk atau meninggalkan status dock.
(Hanya menu) Pindah ke dok baru menutup jendela Watch dan membukanya di dock baru.
(Hanya menu) Tetapkan sebagai target tab-dock untuk jenis jendela tidak tersedia untuk jendela Watch. Opsi ini hanya tersedia untuk jendela Sumber atau Memori .
(Hanya menu) Selalu mengambang menyebabkan jendela tetap tidak ditangguhkan meskipun diseret ke lokasi docking.
(Hanya menu) Pemindahan dengan bingkai menyebabkan jendela bergerak saat bingkai WinDbg dipindahkan, meskipun jendela dilepas.
(Hanya menu) Bantuan membuka topik ini dalam dokumentasi Alat Penelusuran Kesalahan untuk Windows.
(Hanya menu) Tutup jendela ini.
Lihat juga
Untuk informasi selengkapnya tentang mengontrol variabel dan deskripsi perintah terkait memori lainnya, lihat Membaca dan Menulis Memori. Untuk informasi selengkapnya tentang register dan manipulasinya, lihat Melihat dan Mengedit Register di WinDbg (Klasik).