Pseudovariabel dalam Debugger Visual Studio

Pseudovariables adalah istilah yang digunakan untuk menampilkan informasi tertentu dalam jendela variabel atau kotak dialog QuickWatch . Anda dapat memasukkan pseudovariable dengan cara yang sama seperti Anda akan memasukkan variabel normal. Pseudovariabel bukanlah variabel, tetapi juga tidak sesuai dengan nama variabel dalam program Anda.

Example

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

$handles

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

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

Gunakan $err,hr untuk melihat bentuk yang didekodekan dari nilai ini. Misalnya, jika kesalahan terakhir adalah 3, $err,hr akan ditampilkan ERROR_PATH_NOT_FOUND : The system cannot find the path specified.
$handles Menampilkan jumlah handle yang dialokasikan dalam aplikasi Anda.
$vframe Menampilkan alamat kerangka 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 register registername.

Biasanya, Anda dapat menampilkan konten register hanya dengan memasukkan nama register. Satu-satunya waktu Anda perlu menggunakan sintaks ini adalah ketika nama register kelebihan beban nama variabel. Jika nama register sama dengan nama variabel dalam cakupan saat ini, debugger menginterpretasikan nama 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 Windows Runtime saat ini. $ exceptionstack hanya berfungsi di aplikasi UWP. $ exceptionstack tidak didukung untuk pengecualian C++ dan SEH
$returnvalue Menampilkan nilai pengembalian metode.

Di C# Anda dapat menggunakan pseudovariables yang diperlihatkan dalam tabel berikut:

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

Saat Asisten Pengecualian dinonaktifkan, $exception secara otomatis ditambahkan 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 metode .NET.
$threadSmallObjectHeapBytes Menampilkan jumlah total byte yang dialokasikan dalam heap objek kecil oleh thread 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 pseudovariables yang diperlihatkan dalam tabel berikut:

Pseudovariable Function
$exception Menampilkan informasi tentang pengecualian terakhir. Jika tidak ada pengecualian yang terjadi, mengevaluasi $exception menampilkan pesan kesalahan.
$delete atau $$delete Menghapus variabel implisit yang dibuat di jendela Segera . 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 simpul 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.