Info log ke jendela Output menggunakan titik pelacakan di Visual Studio

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

Nota

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

Mari kita ambil contoh

Contoh program berikut adalah perulangan sederhana for 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, pertama-tama klik selokan di sebelah kiri nomor baris tempat Anda ingin mengatur titik pelacakan.

    Cuplikan layar memperlihatkan Inisialisasi Titik Henti dalam kode sampel.

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

    Cuplikan layar memperlihatkan Jendela Titik Henti.

  3. Pilih kotak centang Tindakan .

    Cuplikan layar jendela titik henti dengan Kotak Tindakan dicentang.

    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 masuk ke kotak teks Perlihatkan pesan di Jendela Output (untuk detailnya, lihat bagian selanjutnya di artikel ini).

    Titik pelacakan Anda sekarang 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 .

    Cuplikan layar jendela titik henti dengan Kotak Kondisi dicentang.

    Anda memiliki tiga pilihan untuk kondisi: Ekspresi Bersyarah, Filter, dan Hit Count.

Menu tindakan

Menu ini memungkinkan Anda untuk mencatat pesan ke jendela Output. Ketik string yang ingin Anda keluarkan ke dalam 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.

Cuplikan layar memperlihatkan Pesan Output Penghitung.

Jika Anda mengklik Tutup lalu debug program (F5), Anda akan melihat output berikut di jendela Output.

Cuplikan layar memperlihatkan Pesan Tindakan Di Jendela Output.

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

Keyword Apa yang Ditampilkan
$ADDRESS Instruksi saat ini
$CALLER Nama fungsi panggilan
$CALLSTACK Tumpukan panggilan
$FUNCTION Nama fungsi saat ini
$PID ID Proses
$PNAME Nama proses
$TID ID Utas
$TNAME Nama utas
$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 kondisional

Untuk ekspresi bersyarah, pesan output hanya ditampilkan saat kondisi tertentu terpenuhi.

Untuk ekspresi bersyarah, Anda dapat mengatur titik pelacakan untuk menghasilkan pesan saat kondisi tertentu benar atau ketika telah berubah. Misalnya, jika Anda hanya ingin menampilkan nilai penghitung selama perulangan perulangan yang merata for , Anda dapat memilih opsi Is true lalu ketik i%2 == 0 di kotak teks pesan.

Cuplikan layar memperlihatkan Ekspresi Bersyarah Adalah Benar.

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

Cuplikan layar memperlihatkan saat Ekspresi Bersyarah Diubah.

Perilaku opsi Saat diubah berbeda untuk bahasa pemrograman yang berbeda.

  • Untuk kode asli, debugger tidak menganggap evaluasi pertama kondisi adalah perubahan, sehingga tidak mencapai titik jejak pada evaluasi pertama.
  • Untuk kode terkelola, debugger mencapai titik pelacakan pada evaluasi pertama setelah Ketika 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 Pengaturan Titik Henti . Anda dapat memilih titik henti apa pun dari daftar pilihan.

Cuplikan layar memperlihatkan aktifkan saat titik henti dicentang.

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

Dapatkan bantuan AI

Jika Anda memiliki Copilot, Anda bisa mendapatkan bantuan AI saat membuat titik pelacakan. Copilot memberi Anda saran untuk titik henti bersyarat dan titik pelacakan yang khusus untuk kode Anda.

Cuplikan layar Copilot yang bekerja pada saran titik henti bersyarat.

Untuk informasi selengkapnya, lihat Debug dengan Copilot.

Jumlah Hit

Kondisi hit count memungkinkan Anda mengirim output hanya setelah baris kode tempat titik pelacakan diatur telah menjalankan beberapa kali yang ditentukan.

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 iterasi yang menarik.

Cuplikan layar memperlihatkan Hit Count Ekspresi Bersyar.

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

Cuplikan layar memperlihatkan Hapus titik henti pada hit pertama.

Filter

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

Cuplikan layar memperlihatkan Filter Ekspresi Bersyarah.

Daftar ekspresi filter:

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

Sertakan 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.

Terkadang saat Anda memeriksa properti atau atribut objek, nilainya dapat berubah. Jika nilai berubah selama inspeksi, itu bukan bug yang disebabkan oleh fitur tracepoint 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, sintaks kurung kurawal ({ }) ke ekspresi output mungkin juga berbeda dari konvensi untuk menghasilkan nilai dalam bahasa pengembangan Anda. (Namun, konten dalam kurung kurawal ({ }) masih harus ditulis menggunakan sintaks bahasa pengembangan Anda).

Jika Anda mencoba men-debug aplikasi langsung, dan mencari fitur serupa, lihat fitur titik log kami di Snapshot Debugger. Debugger rekam jepret 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.