Bagikan melalui


Mencatat info ke jendela Output menggunakan titik pelacakan di Visual Studio

Titik pelacakan memungkinkan Anda untuk mencatat informasi ke jendela Output dalam kondisi yang dapat dikonfigurasi tanpa mengubah atau menghentikan kode Anda. Fitur ini didukung untuk bahasa terkelola (C#, Visual Basic, F#) dan kode native serta bahasa seperti JavaScript dan Python.

Catatan

Untuk informasi tentang informasi pengelogan ke jendela Output secara terprogram menggunakan API .NET, lihat Mengirim pesan ke jendela Output.

Mari mengambil contoh

Contoh program berikut adalah perulangan for sederhana dengan variabel penghitung yang meningkat satu per satu setiap kali perulangan menjalankan perulangan lain.

Screenshot of a sample counter program.

Contoh program berikut adalah perulangan for sederhana dengan variabel penghitung yang meningkat satu per satu setiap kali perulangan menjalankan perulangan lain.


using System.Diagnostics;

namespace Tracepoints
{
    public class Program
    {
        public static void Main(string[] args)
        {
            int counter = 0;
            for (int i=0; i<=10; i++)
            {
                counter +=1;
            }
        }
    }
}

Mengatur titik pelacakan dalam kode sumber

Anda dapat mengatur titik pelacakan dengan menentukan string output di bawah kotak centang Tindakan di jendela Pengaturan Titik Henti.

  1. Untuk menginisialisasi titik pelacakan, terlebih dahulu klik tepian di sebelah kiri nomor baris tempat Anda ingin mengatur titik pelacakan.

    Screenshot showing the Breakpoint Initialization in the sample code.

  2. Arahkan mouse ke atas lingkaran merah dan kemudian klik ikon roda gigi.

  3. Tindakan ini membuka jendela Breakpoint Pengaturan.

    Screenshot showing Breakpoint Window.

  4. Pilih kotak centang Tindakan.

    Screenshot of breakpoint window with Actions Box checked.

    Perhatikan bagaimana lingkaran merah berubah menjadi berlian yang menunjukkan bahwa Anda telah beralih dari titik henti ke titik pelacakan.

  5. Masukkan pesan yang ingin Anda catatkan ke dalam kotak teks Tampilkan pesan di Jendela Output (untuk detailnya, lihat bagian selanjutnya di artikel ini).

    Titik pelacakan Anda sekarang telah diatur. Tekan tombol "Tutup" jika yang ingin Anda lakukan adalah mencatat beberapa informasi ke Jendela Output.

  6. Jika Anda ingin menambahkan kondisi yang menentukan apakah pesan Anda ditampilkan, pilih kotak centang Kondisi.

    Screenshot of breakpoint window with Conditions Box checked.

    Anda memiliki tiga pilihan untuk kondisi: Ungkapan Bersyarat, Filter, dan Jumlah Hit.

Anda dapat mengatur titik pelacakan dengan menentukan string output di bawah kotak centang Tindakan di jendela Pengaturan Titik Henti.

  1. Untuk menginisialisasi titik pelacakan, terlebih dahulu klik tepian di sebelah kiri nomor baris tempat Anda ingin mengatur titik pelacakan.

    Screenshot showing the Breakpoint Initialization in the sample code.

  2. Arahkan mouse ke atas lingkaran merah dan klik ikon gigi untuk membuka jendela Breakpoint Pengaturan.

    Screenshot showing Breakpoint Window.

  3. Pilih kotak centang Tindakan.

    Screenshot of breakpoint window with Actions Box checked.

    Perhatikan bagaimana lingkaran merah berubah menjadi berlian yang menunjukkan bahwa Anda telah beralih dari titik henti ke titik pelacakan.

  4. Masukkan pesan yang ingin Anda catatkan ke dalam kotak teks Tampilkan pesan di Jendela Output (untuk detailnya, lihat bagian selanjutnya di artikel ini).

    Titik pelacakan Anda sekarang telah diatur. Tekan tombol "Tutup" jika yang ingin Anda lakukan adalah mencatat beberapa informasi ke Jendela Output.

  5. Jika Anda ingin menambahkan kondisi yang menentukan apakah pesan Anda ditampilkan, pilih kotak centang Kondisi.

    Screenshot of breakpoint window with Conditions Box checked.

    Anda memiliki tiga pilihan untuk kondisi: Ungkapan Bersyarat, Filter, dan Jumlah Hit.

Menu tindakan

Menu ini memungkinkan Anda untuk mencatat pesan ke jendela Output. Ketik string yang ingin Anda keluarkan ke kotak pesan (tidak perlu tanda kutip). Jika Anda ingin menampilkan nilai variabel, pastikan Anda mengapitnya dalam kurung kurawal.

Misalnya, jika Anda ingin menampilkan nilai variabel counter di konsol output, ketik {counter} di kotak teks pesan.

Screenshot showing Counter Output Message.

Jika Anda mengklik Tutup dan kemudian men-debug program (F5), Anda akan melihat output berikut di jendela Output.

Screenshot showing Actions Message In Output Window.

Anda juga dapat menggunakan kata kunci khusus untuk menampilkan informasi yang lebih spesifik. Masukkan kata kunci persis seperti yang ditunjukkan di bawah (gunakan "$" di depan tiap kata kunci dan semua huruf besar untuk kata kunci itu sendiri).

Kata kunci Yang Ditampilkan
$ADDRESS Petunjuk saat ini
$CALLER Memanggil nama fungsi
$CALLSTACK Tumpukan panggilan
$FUNCTION Nama fungsi saat ini
$PID ID Proses
$PNAME Nama proses
$TID ID Utas
$TNAME Nama alur
$TICK Jumlah centang (dari Windows GetTickCount)

Menu ini memungkinkan Anda untuk mencatat pesan ke jendela Output. Ketik string yang ingin Anda keluarkan ke kotak pesan (tidak perlu tanda kutip). Jika Anda ingin menampilkan nilai variabel, pastikan Anda mengapitnya dalam kurung kurawal.

Misalnya, jika Anda ingin menampilkan nilai counter variabel di konsol output, ketik {counter} di kotak teks pesan.

Screenshot showing Counter Output Message.

Jika Anda mengklik Tutup dan kemudian men-debug program (F5), Anda akan melihat output berikut di jendela Output.

Screenshot showing Actions Message In Output Window.

Anda juga dapat menggunakan kata kunci khusus untuk menampilkan informasi yang lebih spesifik. Masukkan kata kunci persis seperti yang ditunjukkan di bawah (gunakan "$" di depan tiap kata kunci dan semua huruf besar untuk kata kunci itu sendiri).

Kata kunci Yang Ditampilkan
$ADDRESS Petunjuk saat ini
$CALLER Memanggil nama fungsi
$CALLSTACK Tumpukan panggilan
$FUNCTION Nama fungsi saat ini
$PID ID Proses
$PNAME Nama proses
$TID ID Utas
$TNAME Nama alur
$TICK Jumlah centang (dari Windows GetTickCount)

Menu kondisi

Kondisi memungkinkan Anda memfilter pesan output Anda, sehingga hanya ditampilkan dalam skenario tertentu. Ada tiga jenis kondisi utama yang tersedia untuk Anda.

Ekspresi bersyarat

Untuk ungkapan bersyarat, pesan output hanya ditampilkan saat kondisi tertentu terpenuhi.

Untuk ungkapan bersyarat, Anda dapat mengatur titik pelacakan untuk mengeluarkan pesan saat kondisi tertentu benar atau saat telah berubah. Misalnya, jika Anda hanya ingin menampilkan nilai penghitung selama perulangan for yang merata, Anda dapat memilih opsi Is true dan kemudian mengetik i%2 == 0 di kotak teks pesan.

Screenshot showing Conditional Expression Is True.

Jika Anda ingin mencetak nilai penghitung saat perulangan for berubah, pilih opsi Saat diubah dan ketik i di kotak teks pesan.

Screenshot showing when Conditional Expression is Changed.

Perilaku opsi Saat diubah berbeda untuk bahasa pemrograman yang berbeda.

  • Untuk kode native, debugger tidak menganggap evaluasi pertama kondisi tersebut sebagai perubahan, sehingga tidak mencapai titik pelacakan pada evaluasi pertama.
  • Untuk kode terkendali, debugger mencapai titik pelacakan pada evaluasi pertama setelah Saat diubah dipilih.

Untuk melihat ekspresi valid secara lebih komprehensif yang dapat Anda gunakan saat mengatur kondisi, lihat Ekspresi di debugger.

Untuk ungkapan bersyarat, pesan output hanya ditampilkan saat kondisi tertentu terpenuhi.

Untuk ungkapan bersyarat, Anda dapat mengatur titik pelacakan untuk mengeluarkan pesan saat kondisi tertentu benar atau saat telah berubah. Misalnya, jika Anda hanya ingin menampilkan nilai penghitung selama perulangan for yang merata, Anda dapat memilih opsi Is true dan kemudian mengetik i%2 == 0 di kotak teks pesan.

Screenshot showing Conditional Expression Is True.

Jika Anda ingin mencetak nilai penghitung saat perulangan for berubah, pilih opsi Saat diubah dan ketik i di kotak teks pesan.

Screenshot showing when Conditional Expression is Changed.

Perilaku opsi Saat diubah berbeda untuk bahasa pemrograman yang berbeda.

  • Untuk kode native, debugger tidak menganggap evaluasi pertama kondisi tersebut sebagai perubahan, sehingga tidak mencapai titik pelacakan pada evaluasi pertama.
  • Untuk kode terkendali, debugger mencapai titik pelacakan pada evaluasi pertama setelah Saat diubah dipilih.

Anda juga dapat mengatur kondisi saat titik pelacakan dapat diaktifkan dengan menyisipkan Titik Henti ke bagian kode tertentu dan memilih kotak centang Hanya aktifkan saat titik henti berikut ini tertembak: opsi di menu Breakpoint Pengaturan. Anda dapat memilih titik henti apa pun dari daftar pilihan.

Screenshot showing enable when a breakpoint is hit checked.

Untuk melihat ekspresi valid secara lebih komprehensif yang dapat Anda gunakan saat mengatur kondisi, lihat Ekspresi di debugger.

Jumlah hit

Kondisi jumlah hit memungkinkan Anda mengirim output hanya setelah baris kode di mana titik pelacakan diatur telah dijalankan dalam jumlah tertentu.

Untuk hit count, Anda dapat memilih untuk menghasilkan pesan saat baris kode tempat titik pelacakan diatur telah dijalankan beberapa kali. Berdasarkan persyaratan itu bisa sama dengan, atau kelipatan, atau lebih besar dari atau sama dengan nilai hit count yang ditentukan. Pilih opsi yang paling sesuai dengan kebutuhan Anda dan ketik nilai bilangan bulat di bidang (misalnya, 5) yang mewakili perulangan.

Screenshot showing Conditional Expression Hit Count.

Kondisi jumlah hit memungkinkan Anda mengirim output hanya setelah baris kode di mana titik pelacakan diatur telah dijalankan dalam jumlah tertentu.

Untuk hit count, Anda dapat memilih untuk menghasilkan pesan saat baris kode tempat titik pelacakan diatur telah dijalankan beberapa kali. Berdasarkan persyaratan itu bisa sama dengan, atau kelipatan, atau lebih besar dari atau sama dengan nilai hit count yang ditentukan. Pilih opsi yang paling sesuai dengan kebutuhan Anda dan ketik nilai bilangan bulat di bidang (misalnya, 5) yang mewakili perulangan.

Screenshot showing Conditional Expression Hit Count.

Anda juga dapat menghapus titik henti pada hit pertama dengan mengaktifkan kotak centang Hapus titik henti setelah ditemui.

Screenshot showing Remove breakpoint on first hit.

Filter

Untuk kondisi filter, tentukan perangkat, proses, atau output utas mana yang ditampilkan.

Screenshot showing Conditional Expression Filter.

Daftar ekspresi filter:

  • MachineName = "name"
  • ProcessId = nilai
  • ProcessName = "name"
  • ThreadId = value
  • ThreadName = "name"

Apit string (seperti nama) dalam tanda kutip ganda. Nilai dapat dimasukkan tanpa tanda kutip. Anda dapat menggabungkan klausa menggunakan & (AND), || (OR), ! (NOT), dan tanda kurung.

Untuk kondisi filter, tentukan perangkat, proses, atau output utas mana yang ditampilkan.

Screenshot showing Conditional Expression Filter.

Daftar ekspresi filter:

  • MachineName = "nama"
  • ProcessId = nilai
  • ProcessName = "nama"
  • ThreadId = nilai
  • ThreadName = "nama"

Apit string (seperti nama) dalam tanda kutip ganda. Nilai dapat dimasukkan tanpa tanda kutip. Anda dapat menggabungkan klausa menggunakan & (AND), || (OR), ! (NOT), dan tanda kurung.

Pertimbangan

Sementara tracepoint dimaksudkan untuk membuat debugging pengalaman yang lebih bersih, dan lebih lancar. Ada beberapa pertimbangan yang harus Anda ketahui saat menggunakannya.

Kadang saat Anda memeriksa properti atau atribut objek, nilainya dapat berubah. Jika nilai berubah selama pemeriksaan, itu bukan bug yang disebabkan oleh fitur titik pelacakan itu sendiri. Namun, menggunakan titik pelacakan untuk memeriksa objek tidak menghindari modifikasi yang tidak disengaja ini.

Cara ekspresi dievaluasi dalam kotak Pesan tindakan mungkin berbeda dari bahasa yang saat ini Anda gunakan untuk pengembangan. Misalnya, untuk mengeluarkan string, Anda tidak perlu membungkus pesan dalam tanda kutip bahkan jika Anda biasanya menggunakan Debug.WriteLine() atau console.log(). Selain itu, sintaksis kurung kurawal ({ }) ke ekspresi output mungkin juga berbeda dari konvensi untuk mengeluarkan nilai dalam bahasa pengembangan Anda. (Akan tetapi, konten dalam kurung kurawal ({ }) tetap harus ditulis menggunakan sintaksis bahasa pengembangan Anda).

Jika Anda mencoba men-debug aplikasi langsung, dan mencari fitur serupa, lihat fitur titik log kami di Snapshot Debugger. Snapshot debugger adalah alat yang digunakan untuk menyelidiki masalah dalam aplikasi produksi. Titik log juga memungkinkan Anda mengirim pesan ke Jendela Output tanpa harus mengubah kode sumber dan tidak memengaruhi aplikasi yang sedang berjalan. Untuk informasi selengkapnya, lihat Men-debug aplikasi Azure langsung.