JDB - บทนำ

การดีบักเป็นขั้นตอนทางเทคนิคในการค้นหาและลบจุดบกพร่องหรือข้อบกพร่องในโปรแกรมและได้ผลลัพธ์ที่คาดหวัง การดีบักรวมถึงการทดสอบและการตรวจสอบ มีความซับซ้อนมากเมื่อหน่วยย่อยของโปรแกรมอยู่คู่กันอย่างแน่นหนา เราสามารถดีบักโปรแกรมโดยใช้เครื่องมือดีบักเกอร์ที่เป็นไปตาม API ที่กำหนด ดีบักเกอร์ช่วยให้คุณสามารถดำเนินการตามทุกแง่มุมของโค้ดตรวจสอบองค์ประกอบทั้งหมดและลบข้อผิดพลาดหากมี

เทคนิคการดีบัก

มีเทคนิคหลายประเภทในการดีบักโปรแกรม Java วิธีการดีบักแบบเก่าคือการใช้คำสั่งพิมพ์ที่ส่วนท้ายของทุกเซ็กเมนต์ซึ่งจะพิมพ์คำสั่งการติดตามบนคอนโซล ดูรหัสต่อไปนี้

pubic class Add
{
   public static void main(String ar[])
   {
      int a = ar[0];
      system.out.println("A : " + a);
      
      int b = ar[1];
      system.out.println("B : " + b);
      
      int c = a + b;
      system.out.println("C = a + b : " + c);
   }
}

ที่นี่เรามีโปรแกรมที่เพิ่มตัวเลขสองตัวและพิมพ์ผลลัพธ์ โปรดสังเกตว่าในแต่ละขั้นตอนเราได้แนะนำคำสั่งพิมพ์ที่พิมพ์สถานะของโปรแกรมบนคอนโซล นี่คือแนวทางดั้งเดิมในการดีบักโปรแกรม

นอกจากนี้เรายังมีแนวคิดขั้นสูงที่สามารถใช้ในการดีบักโปรแกรมเช่น:

  • stepping
  • จุดพักและ
  • ข้อยกเว้นหรือจุดเฝ้าระวัง

ประเภทของการดีบัก

เราสามารถดีบักโปรแกรมโดยใช้วิธีการต่างๆ:

  • การใช้ Java bytecode (เวอร์ชันคอมไพล์ของโค้ด Java)
  • การใช้ความคิดเห็นภายในโปรแกรม
  • การแนบคลาสกับโปรแกรมที่กำลังทำงานอยู่
  • การดีบักระยะไกล
  • การแก้ไขข้อบกพร่องตามความต้องการ
  • การดีบักโค้ดที่เพิ่มประสิทธิภาพ

Java Debuggers

นี่คือตัวอย่างบางส่วนของดีบักเกอร์ Java ที่มีอยู่ในตลาด:

  • IDE เช่น Eclipse, Netbeans และอื่น ๆ มี debuggers ของตัวเอง (Visual cafe, Borland, JBuilder)
  • GUI สำหรับดีบักเกอร์แบบสแตนด์อโลน (เช่น Jikes, Java platform debugger และ JProbe)
  • ดีบักเกอร์บรรทัดคำสั่ง (JDB ของ Sun)
  • Notepad หรือ VI ขับเคลื่อน (การติดตามสแต็ก)

บทช่วยสอนนี้ครอบคลุมถึงวิธีการใช้ดีบักเกอร์บรรทัดคำสั่ง jdb.

JDB

Java debugger (JDB) เป็นเครื่องมือสำหรับคลาส Java เพื่อดีบักโปรแกรมในบรรทัดรับคำสั่ง ใช้สถาปัตยกรรม Java Platform Debugger ช่วยในการตรวจจับและแก้ไขจุดบกพร่องในโปรแกรม Java โดยใช้ Java Debug Interface (JDI)

JDB ใน JDK

สถาปัตยกรรมต่อไปนี้กำหนดบทบาทของ JDB ใน JDK ประกอบด้วยสามหน่วยส่วนใหญ่:

  • Java Virtual Machine Tool Interface (JVM TI)
  • Java Debug Wiring Pool (JDWP)
  • Java Debugger Interface (JDI)

JVM TI

เป็นอินเทอร์เฟซการเขียนโปรแกรมดั้งเดิมที่ใช้งานโดย VM มีวิธีตรวจสอบและดีบักสถานะของแอปพลิเคชันที่ทำงานบน VM อนุญาตให้ใช้ตัวดำเนินการ (VM Implementer) ที่สามารถแนบเข้ากับสถาปัตยกรรมการดีบักได้อย่างง่ายดาย นอกจากนี้ยังใช้ช่องของบุคคลที่สามที่เรียกว่าJDWP เพื่อการสื่อสาร

JDWP

กำหนดรูปแบบของข้อมูลและคำร้องขอที่ส่งผ่านระหว่างกระบวนการดีบักและส่วนหน้าของดีบักเกอร์ จุดประสงค์หลักของการมี JDWP คือการอนุญาตให้ดีบักจีและดีบักเกอร์สื่อสารกันเมื่อทำงานภายใต้ VM ที่แยกกันหรือในแพลตฟอร์มแยกกัน

JDI

เป็นอินเทอร์เฟซ Java ระดับสูงที่ใช้เป็นส่วนหน้า เป็นการกำหนดข้อมูลตัวแปรที่ระดับรหัสผู้ใช้ ขอแนะนำให้ใช้เลเยอร์ JDI สำหรับการพัฒนาดีบักเกอร์ทั้งหมด ใช้ JDWP สำหรับการสื่อสารกับ debuggee JVM