JDB - Melangkah

Bab ini menjelaskan cara menggunakan konsep Stepping dalam men-debug program. Stepping adalah fitur debugger yang memungkinkan Anda mengeksekusi kode dengan melangkah melalui baris demi baris. Dengan menggunakan ini, Anda dapat memeriksa setiap baris kode untuk memastikannya berperilaku seperti yang diinginkan.

Perintah berikut digunakan dalam proses melangkah:

  • langkah: langkah ke baris eksekusi berikutnya
  • daftar: memeriksa posisi Anda dalam kode
  • lanjutan: melanjutkan sisa eksekusi

Contoh

Contoh berikut menggunakan kelas Add yang telah kita gunakan di bab sebelumnya:

public class Add
{
   public int addition( int x, int y)
   {
      int z = x + y;
      return z;
   }
   
   public static void main( String ar[ ] )
   {
      int a = 5, b = 6;
      Add ob = new Add();
      
      int c = ob.addition(a,b);
      System.out.println("Add: " + c);
   }
}

Simpan file di atas sebagai Add.java. Kompilasi file ini menggunakan perintah berikut:

\>javac Add.java

Mari kita asumsikan bahwa breakpoint diatur pada metode main () kelas Add. Langkah-langkah berikut menunjukkan cara menerapkan melangkah di kelas Tambah.

Langkah 1: Jalankan Pekerjaan

Perintah berikut mulai menjalankan kelas bernama Add.

> run Add

Jika Anda menjalankan perintah ini, Anda akan melihat output berikut. Dalam keluaran ini, Anda dapat menemukan bahwa eksekusi berhenti pada posisi breakpoint, yaitu pada metode main ().

Eksekusi berhenti di baris pertama dari metode utama, yaitu di "int a = 5, b = 6;" atau Baris no: 11 pada kode. Anda dapat mengamati informasi ini di keluaran.

Langkah 2: Selesaikan Kode

Perintah berikut langkah eksekusi ke baris berikutnya.

main[1] step

Sekarang langkah-langkah eksekusi ke Baris no: 12. Anda bisa melihat output berikut.

Langkah 3: Buat Daftar Kode

Perintah berikut mencantumkan kode:

main[1] list

Anda mendapatkan hasil sebagai berikut. Perintah daftar digunakan untuk memberi tahu Anda baris dalam kode yang telah dicapai oleh kontrol program. Perhatikan tanda panah => di tangkapan layar berikut yang menunjukkan posisi kontrol program saat ini.

Langkah 4: Lanjutkan Eksekusi

Perintah berikut terus menjalankan kode:

main[1] cont

Perintah ini terus mengeksekusi baris kode yang tersisa. Outputnya seperti gambar di bawah ini:

> Add:11
The application exited
\>

Secara umum, ada tiga jenis pijakan:

  • Melangkah ke
  • Langkah selesai
  • Melangkah keluar

Melangkah ke

Dengan menggunakan perintah ini, Anda dapat melangkah ke baris kode berikutnya. Jika baris kode berikutnya adalah pemanggilan fungsi, maka ia memasuki fungsi dengan menggerakkan kontrol di baris atas fungsi.

Dalam kode berikut, tanda panah mendefinisikan pengontrol dalam kode.

public class Add
{
   public int addition( int x, int y)
   {
      int z = x + y;
      return z;
   }
   
   public static void main( String ar[ ] )
   {
      int a = 5, b = 6;
   -> Add ob = new Add();
      
      int c = ob.addition(a,b);
      System.out.println("Add: " + c);
   }
}

Jika Anda menggunakan step intoperintah, pengontrol pindah ke baris berikutnya, yaitu, "int c = ob.addition (a, b);". Di baris ini, ada pemanggilan fungsiaddition(int, int) maka pengontrol bergerak ke baris paling atas dari fungsi penjumlahan dengan tanda panah seperti yang ditunjukkan di bawah ini:

public class Add
{
   public int addition( int x, int y)
-> {
      int z = x + y;
      return z;
   }
      
   public static void main( String ar[ ] )
   {
      int a = 5, b = 6;
      Add ob = new Add();
      
      int c = ob.addition(a,b);
      System.out.println("Add: " + c);
   }
}

Langkah selesai

Step Over juga menjalankan baris berikutnya. Tetapi jika baris berikutnya adalah pemanggilan fungsi, itu mengeksekusi fungsi itu di latar belakang dan mengembalikan hasilnya.

Mari kita ambil contoh. Dalam kode berikut, tanda panah mendefinisikan kontrol dalam kode.

public class Add
{
   public int addition( int x, int y)
   {
      int z = x + y;
      return z;
   }
   public static void main( String ar[ ] )
   {
      int a = 5, b = 6;
   -> Add ob = new Add();
   
      int c = ob.addition(a,b);
      System.out.println("Add: " + c);
   }
}

Jika Anda menggunakan step overperintah, kontrol pindah ke baris berikutnya, yaitu, "int c = ob.addition (a, b);". Di baris ini, ada pemanggilan fungsiaddition(int, int) maka eksekusi fungsi dilakukan di latar belakang dan hasilnya dikembalikan ke baris saat ini dengan tanda panah seperti yang ditunjukkan di bawah ini:

public class Add
{
   public int addition( int x, int y)
   {
      int z = x + y;
      return z;
   }
   
   public static void main( String ar[ ] )
   {
      int a = 5, b = 6;
      Add ob = new Add();
      
   -> int c = ob.addition(a,b);
      System.out.println("Add: " + c);
   }
}

Melangkah keluar

Step Out menjalankan baris berikutnya. Jika baris berikutnya adalah pemanggilan fungsi, ia melewatinya dan eksekusi fungsi berlanjut dengan baris kode yang tersisa.

Mari kita ambil contoh. Dalam kode berikut, tanda panah mendefinisikan pengontrol dalam kode.

public class Add
{
   public int addition( int x, int y)
   {
      int z = x + y;
      return z;
   }
   
   public static void main( String ar[ ] )
   {
      int a = 5, b = 6;
   -> Add ob = new Add();
   
      int c = ob.addition(a,b);
      System.out.println("Add: " + c);
   }
}

Jika Anda menggunakan step outperintah, pengontrol pindah ke baris berikutnya, yaitu, "int c = ob.addition (a, b);". Di baris ini, ada pemanggilan fungsiaddition(int, int) karenanya eksekusi fungsi dilewati dan eksekusi yang tersisa dilanjutkan dengan tanda panah seperti yang ditunjukkan di bawah ini:

public class Add
{
   public int addition( int x, int y)
   {
      int z = x + y;
      return z;
   }
   
   public static void main( String ar[ ] )
   {
      int a = 5, b = 6;
      Add ob = new Add();
      
   -> int c = ob.addition(a,b);
      System.out.println("Add: " + c);
   }
}