ฉันต้องการดีบักการไหลทั้งหมดของโปรแกรม Java อะไรคือความแตกต่างระหว่างF5(ก้าวเข้าสู่) และF6(ก้าวข้าม) ใน eclipse?
ฉันต้องการดีบักการไหลทั้งหมดของโปรแกรม Java อะไรคือความแตกต่างระหว่างF5(ก้าวเข้าสู่) และF6(ก้าวข้าม) ใน eclipse?
คำตอบ:
พิจารณาโค้ดต่อไปนี้พร้อมกับตัวชี้คำสั่งปัจจุบันของคุณ (บรรทัดที่จะถูกดำเนินการถัดไประบุโดย->) ที่f(x)บรรทัดg()นั้นโดยเรียกว่าg(2)บรรทัดในmain():
public class testprog {
static void f (int x) {
System.out.println ("num is " + (x+0)); // <- STEP INTO
}
static void g (int x) {
-> f(x); //
f(1); // <----------------------------------- STEP OVER
}
public static void main (String args[]) {
g(2);
g(3); // <----------------------------------- STEP OUT OF
}
}
หากคุณก้าวเข้าสู่จุดนั้นคุณจะย้ายไปที่println()บรรทัดในf()โดยเข้าสู่การเรียกใช้ฟังก์ชัน
หากคุณต้องก้าวข้ามไปที่จุดนั้นคุณจะย้ายไปยังf(1)บรรทัดที่อยู่ข้างหน้าg()และก้าวข้ามการเรียกใช้ฟังก์ชัน
คุณสมบัติที่มีประโยชน์อีกประการของโปรแกรมดีบั๊กคือขั้นตอนออกหรือย้อนกลับขั้นตอน ในกรณีนั้นการย้อนกลับแบบขั้นตอนจะนำคุณผ่านฟังก์ชั่นปัจจุบันจนกระทั่งคุณย้อนกลับไปหนึ่งระดับ ในคำอื่น ๆ ก็จะก้าวผ่านf(x)และf(1)แล้วกลับออกไปยังฟังก์ชั่นการโทรไปจบลงที่ในg(3)main()
Eclipse (อย่างน้อย Europa ซึ่งเป็นเพียงคนเดียวที่ฉันมีประโยชน์ในขณะนี้) ใช้F5สำหรับstep into, F6สำหรับstep overและสำหรับF7step return
g(3)ในmain()" <-คุณคิดว่าคุณได้รับตำแหน่งปัจจุบันของคุณจากg(2)เมื่อคุณเสร็จแล้วคุณจะกลับไปที่บรรทัดถัดไปg(3)หรือไม่
g(2)หรือg(3)กำลังเปิดใช้งานอยู่) ดังนั้นฉันจึงได้ลบมันในย่อหน้าแรก ขอบคุณสำหรับหัวขึ้น.
เมื่อทำการดีบักบรรทัดของรหัสนี่คือสถานการณ์ปกติ:
Eclipse มีคุณสมบัติการดีบักขั้นสูงอื่น ๆ แต่สิ่งเหล่านี้เป็นพื้นฐานขั้นพื้นฐาน
ขั้นตอนในจะขุดเป็นวิธีการโทร
ขั้นตอนมากกว่าจะดำเนินการบรรทัดและไปที่ถัดไป
คุณไม่สามารถอ่านรายละเอียดของวิธีการได้โดยใช้ขั้นตอน หากคุณต้องการข้ามบรรทัดปัจจุบันคุณสามารถใช้ขั้นตอนที่ผ่านมาได้จากนั้นคุณเพียงกดปุ่มF6หนึ่งครั้งเพื่อเลื่อนไปยังบรรทัดถัดไป และถ้าคุณคิดว่ามีบางสิ่งผิดปกติในวิธีการนั้นให้ใช้F5เพื่อตรวจสอบรายละเอียด
Step Intoนิพจน์ถัดไปของบรรทัดที่เลือกในปัจจุบันที่จะดำเนินการถูกเรียกใช้และการดำเนินการจะหยุดชั่วคราวที่บรรทัดที่สามารถใช้งานได้ถัดไปในวิธีที่เรียกใช้
Step Over บรรทัดที่เลือกในปัจจุบันจะถูกดำเนินการและหยุดชั่วคราวในบรรทัดที่สามารถเรียกทำงานต่อไปได้