Bagikan melalui


Pseudovariable dalam pen-debug Visual Studio

Pseudovariable adalah istilah yang digunakan untuk menampilkan informasi tertentu dalam jendela variabel atau kotak dialog QuickWatch. Anda dapat memasukkan pseudovariable dengan cara yang sama seperti memasukkan variabel normal. Namun, pseudovariable bukan variabel dan tidak sesuai dengan nama variabel dalam program Anda.

Contoh

Misalkan Anda menulis aplikasi kode asli dan ingin melihat jumlah handel yang dialokasikan dalam aplikasi Anda. Di jendela Watch, Anda dapat memasukkan pseudovariable berikut di kolom Nama, lalu tekan Return untuk mengevaluasinya:

$handles

Dalam kode asli, Anda bisa menggunakan pseudovariables yang diperlihatkan dalam tabel berikut:

Pseudovariable Fungsi
$err Menampilkan nilai kesalahan terakhir yang ditetapkan dengan fungsi SetLastError. Nilai yang ditampilkan mewakili apa yang akan dimunculkan oleh fungsi GetLastError.

Gunakan $err,hr untuk melihat bentuk nilai ini yang didekodekan. Misalnya, jika kesalahan terakhir adalah 3, $err,hr akan menampilkan ERROR_PATH_NOT_FOUND : The system cannot find the path specified.
$handles Menampilkan jumlah handel yang dialokasikan di aplikasi Anda.
$vframe Menampilkan alamat bingkai tumpukan saat ini.
$tid Menampilkan ID utas untuk utas saat ini.
$env Menampilkan blok lingkungan dalam penampil string.
$cmdline Menampilkan string baris perintah yang meluncurkan program.
$pid Menampilkan ID proses.
$nama register

or

@nama register
Menampilkan isi daftar registername.

Biasanya, Anda dapat menampilkan konten register hanya dengan memasukkan nama register. Satu-satunya waktu untuk menggunakan sintaks ini adalah ketika nama register membebani nama variabel. Jika nama daftarnya sama dengan nama variabel dalam cakupan saat ini, pen-debug akan menginterpretasikan namanya sebagai nama variabel. Saat itulah $registername atau @registername berguna.
$clk Menampilkan waktu dalam siklus jam.
$user Menampilkan struktur dengan informasi akun untuk akun yang menjalankan aplikasi. Untuk alasan keamanan, informasi kata sandi tidak ditampilkan.
$exceptionstack Menampilkan jejak tumpukan pengecualian Runtime Windows saat ini. $ exceptionstack hanya berfungsi di aplikasi UWP. $ exceptionstack tidak didukung untuk pengecualian C++ dan SEH
$returnvalue Menampilkan nilai pengembalian metode.

Di C#, Anda bisa menggunakan pseudovariable yang diperlihatkan dalam tabel berikut:

Pseudovariable Fungsi
$exception Menampilkan informasi tentang pengecualian terakhir. Jika tidak ada pengecualian yang terjadi, mengevaluasi $exception akan menampilkan pesan kesalahan.

Saat Asisten Pengecualian dinonaktifkan, $exception ditambahkan secara otomatis ke jendela Lokal saat pengecualian terjadi.
$user Menampilkan struktur dengan informasi akun untuk akun yang menjalankan aplikasi. Untuk alasan keamanan, informasi kata sandi tidak ditampilkan.
$returnvalue Menampilkan nilai pengembalian dari metode .NET.
$threadSmallObjectHeapBytes Menampilkan jumlah total byte yang dialokasikan dalam timbunan objek kecil oleh utas saat ini. (.NET 6+)
$threadUserOldHeapBytes Menampilkan jumlah total byte yang dialokasikan dalam timbunan lama pengguna berdasarkan utas saat ini. User Old Heap = Large Object Heap + Pinned Object Heap (.NET 6+)

Di Visual Basic, Anda bisa menggunakan pseudovariable yang diperlihatkan dalam tabel berikut:

Pseudovariable Fungsi
$exception Menampilkan informasi tentang pengecualian terakhir. Jika tidak ada pengecualian yang terjadi, mengevaluasi $exception akan menampilkan pesan kesalahan.
$delete atau $$delete Menghapus variabel implisit yang dibuat di jendela Langsung. Sintaksnya adalah $delete, variabel atau$delete, variabel.
$objectids atau $listobjectids Menampilkan semua ID Objek aktif sebagai turunan dari ekspresi yang ditentukan. Sintaksnya adalah $objectid, ekspresi atau$listobjectids, ekspresi.
$N # Menampilkan objek dengan ID Objek sama dengan N.
$dynamic Menampilkan node Tampilan Dinamis khusus untuk objek yang mengimplementasikan IDynamicMetaObjectProvider. Antarmuka. Sintaksnya adalah $dynamic, objek. Fitur ini hanya berlaku untuk kode yang menggunakan .NET Framework versi 4 atau yang lebih baru.