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.
Arsitektur visualizer debugger terdiri dari dua bagian:
Sisi debugger beroperasi di dalam debugger Visual Studio. Kode sisi debugger membuat dan menampilkan antarmuka pengguna untuk visualizer Anda.
Sisi debuggee berjalan dalam proses yang sedang di-debug oleh Visual Studio (yaitu, debuggee).
Visualizer adalah komponen debugger yang memungkinkan debugger menampilkan (memvisualisasikan) konten objek data dalam bentuk yang bermakna dan dapat dimengerti. Beberapa visualizer mendukung pengeditan objek data juga. Dengan menulis visualizer kustom, Anda dapat memperluas debugger untuk menangani jenis data kustom Anda sendiri.
Objek data yang divisualisasikan berada dalam proses debugging (proses debuggee). Antarmuka pengguna yang akan menampilkan data dibuat dalam proses debugger Visual Studio:
| Proses Debugger | Proses Debuggee |
|---|---|
| Antarmuka pengguna Debugger (DataTips, Watch Window, QuickWatch) | Objek Data yang akan divisualisasikan |
Untuk memvisualisasikan objek data dalam antarmuka debugger, Anda memerlukan kode untuk berkomunikasi antara dua proses. Akibatnya, arsitektur visualizer terdiri dari dua bagian: kode sisi debugger dan kode sisi debuggee.
Kode sisi debugger membuat antarmuka penggunanya sendiri, yang dapat dipanggil dari antarmuka debugger, seperti DataTip, Jendela Pengawasan, atau QuickWatch. Antarmuka visualizer dibuat dengan menggunakan DialogDebuggerVisualizer kelas dan IDialogVisualizerService antarmuka. Seperti semua API Visualizer, DialogDebuggerVisualizer dan IDialogVisualizerService ditemukan di namespace Microsoft.VisualStudio.DebuggerVisualizers.
| Sisi Debugger | Sisi Debuggee |
|---|---|
| Kelas DialogDebuggerVisualizer Antarmuka IDialogVisualizerService |
Objek Data |
Antarmuka pengguna mengambil data yang akan divisualisasikan dari Penyedia Objek, yang berada di sisi debugger.
| Bagian Debugger | Sisi Debuggee |
|---|---|
| Kelas DialogDebuggerVisualizer Antarmuka IDialogVisualizerService |
Objek Data |
| Penyedia Objek (mengimplementasikan IVisualizerObjectProvider) |
Ada objek yang sesuai di sisi debuggee yang disebut Sumber Objek:
| Sisi Debugger | Pihak Debuggee |
|---|---|
| Kelas DialogDebuggerVisualizer Antarmuka IDialogVisualizerService |
Objek Data |
| Penyedia Objek (mengimplementasikan IVisualizerObjectProvider) | Sumber Objek (berasal dari VisualizerObjectSource) |
Penyedia Objek menyediakan data objek yang akan divisualisasikan ke UI visualizer. Penyedia Objek mendapatkan data objek dari Sumber Objek. Penyedia Objek dan Sumber Objek menyediakan API untuk mengkomunikasikan data objek antara sisi debugger dan sisi debuggee.
Setiap visualizer harus mendapatkan objek data untuk divisualisasikan. Tabel berikut ini memperlihatkan API terkait yang digunakan Penyedia Objek dan Sumber Objek untuk tujuan ini:
| Penyedia Objek | Sumber Objek |
|---|---|
| GetData —atau— GetObject |
GetData |
Perhatikan bahwa penyedia objek dapat menggunakan GetData atau GetObject. Salah satu API menghasilkan panggilan ke GetData pada Sumber Objek. Panggilan untuk Microsoft.VisualStudio.DebuggerVisualizers.VisualizerObjectSource.GetData mengisi System.IO.Stream, yang mewakili bentuk berseri objek yang sedang divisualisasikan.
Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetObject mendeserialisasi data kembali ke bentuk objek, yang kemudian dapat Anda tampilkan di UI yang Anda buat dengan DialogDebuggerVisualizer.
Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetData mengisi data sebagai data mentah Stream, yang harus Anda deserialisasi sendiri.
Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetObject bekerja dengan memanggil Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetData untuk memperoleh Stream yang sudah diserialisasi, lalu mendeserialisasi data. Gunakan Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetData ketika objek tidak dapat diserialisasikan oleh .NET dan memerlukan serialisasi kustom. Dalam hal ini, Anda juga harus mengambil alih Microsoft.VisualStudio.DebuggerVisualizers.VisualizerObjectSource.Serialize metode .
Jika Anda membuat visualizer baca-saja, komunikasi satu arah dengan GetData atau GetObject sudah cukup. Jika Anda membuat visualizer yang mendukung pengeditan objek data, Anda harus melakukan lebih banyak hal. Anda harus dapat mengirim objek data dari Penyedia Objek kembali ke Sumber Objek juga. Tabel berikut ini memperlihatkan PENYEDIA Objek dan API Sumber Objek yang digunakan untuk tujuan ini:
| Penyedia Objek | Sumber Objek |
|---|---|
| ReplaceData —atau— ReplaceObject |
CreateReplacementObject |
Perhatikan, sekali lagi, bahwa ada dua API yang dapat digunakan Oleh Penyedia Objek. Data selalu dikirim dari Penyedia Objek ke Sumber Objek sebagai Stream, tetapi ReplaceData mengharuskan Anda membuat serialisasi objek ke dalam Stream diri Anda sendiri.
ReplaceObject mengambil objek yang Anda berikan, menserialisasikannya menjadi Stream, lalu memanggil ReplaceData untuk mengirim Stream ke CreateReplacementObject.
Menggunakan salah satu metode Replace membuat objek data baru di debuggee yang menggantikan objek yang sedang divisualisasikan. Jika Anda ingin mengubah konten objek asli tanpa menggantinya, gunakan salah satu metode Transfer yang diperlihatkan dalam tabel berikut. API ini mentransfer data ke kedua arah secara bersamaan, tanpa mengganti objek yang sedang divisualisasikan:
| Penyedia Objek | Sumber Objek |
|---|---|
| TransferData —atau— TransferObject |
TransferData |