Bagikan melalui


Periksa aplikasi Anda dengan penelusuran kesalahan historis IntelliTrace di Visual Studio (C#, Visual Basic, C++)

Anda dapat menggunakan penelusuran kesalahan untuk bergerak mundur dan maju melalui eksekusi aplikasi Anda dan memeriksa statusnya.

Anda dapat menggunakan IntelliTrace di edisi Visual Studio Enterprise, tetapi bukan edisi Profesional atau Komunitas.

Mari kita mulai dengan program sederhana yang memiliki bug. Tambahkan kode berikut pada aplikasi konsol C#:

static void Main(string[] args)
{
    int testInt = 0;
    int resultInt = AddIterative(testInt);
    Console.WriteLine(resultInt);
}
private static int AddIterative(int j)
{
    for (int i = 0; i < 20; i++)
    {
        j = AddInt(j);
    }
    return j;
}

private static int AddInt(int add)
{
    if (add == 10)
    {
        return add += 25;
    }
    return ++add;
}

Kami akan berasumsi bahwa nilai resultInt yang diharapkan setelah panggilan AddIterative() adalah 20 (hasil dari penambahan testInt 20 kali). (Kami juga akan berasumsi bahwa Anda tidak dapat melihat bug di AddInt()). Tapi hasil sebenarnya adalah 44. Bagaimana kita dapat menemukan bug tanpa masuk melalui AddIterative() 10 kali? Kita dapat menggunakan penelusuran kesalahan historis untuk menemukan bug lebih cepat dan lebih mudah. Berikut caranya:

  1. Pada Opsi > Alat > IntelliTrace > General, pastikan IntelliTrace diaktifkan, dan pilih informasi peristiwa dan panggilan IntelliTrace. Jika Anda tidak memilih opsi ini, Anda tidak akan dapat melihat gutter navigasi (seperti yang dijelaskan di bawah ini).

  2. Atur titik henti Console.WriteLine(resultInt); pada baris.

  3. Mulai penelusuran kesalahan. Kode dijalankan ke titik henti. Di jendela Lokal, Anda dapat melihat bahwa nilainya resultInt adalah 44.

  4. Buka jendela Alat Diagnostik (Debug > Tampilkan Alat Diagnostik). Jendela kode akan tampak seperti ini:

    Code window at the breakpoint

  5. Anda akan melihat panah ganda di samping margin kiri, tepat di atas titik henti. Area ini disebut gutter navigasi, dan digunakan untuk penelusuran kesalahan historis. Klik panah.

    Di jendela kode, Anda akan melihat bahwa baris kode sebelumnya (int resultInt = AddIterative(testInt);) berwarna merah muda. Di atas jendela, Anda akan melihat pesan bahwa Anda sekarang berada dalam penelusuran kesalahan historis.

    Jendela kode sekarang tampak seperti ini:

    code window in historical debugging mode

  6. Sekarang Anda dapat melangkah ke metode AddIterative() (F11, atau tombol Masuk ke dalam di gutter navigasi). Maju ke (F10, atau Buka Panggilan Berikutnya di gutter navigasi). Garis merah muda sekarang di baris j = AddInt(j);. F10 dalam hal ini tidak melangkah ke baris kode berikutnya. Sebagai gantinya, ini masuk ke panggilan fungsi berikutnya. Penelusuran kesalahan historis menavigasi dari panggilan ke panggilan, dan melewati baris kode yang tidak menyertakan panggilan fungsi.

  7. Sekarang melangkah ke metode AddInt(). Anda akan segera melihat bug dalam kode ini.

Prosedur ini hanya menggores permukaan apa yang dapat Anda lakukan dengan penelusuran kesalahan historis.