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