Eclipse - ดีบักเกอร์ไม่หยุดที่เบรกพอยต์


98

ฉันกำลังพยายามถ่ายภาพ JUnit ไม่สำเร็จ ในซอร์สโค้ดฉันได้กำหนดจุดพักไว้สองตำแหน่ง: 1) ในบรรทัดที่สมาชิกคงที่ถูกเริ่มต้น 2) บรรทัดแรกของกรณีทดสอบหนึ่ง

ดีบักเกอร์หยุดในบรรทัดการเริ่มต้นฟิลด์แบบคงที่ แต่ไม่ได้หยุดในกรณีทดสอบ ไม่ว่าฉันจะตั้งค่าจุดพักไว้ที่ใดในกรณีทดสอบดีบักเกอร์ก็ไม่หยุดเพียงแค่นั้น ฉันทราบแน่นอนว่ามีการดำเนินการกรณีทดสอบเนื่องจากฉันเห็นข้อความบันทึกที่ฉันเพิ่มไว้ปรากฏในบันทึก

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.

ฉันใช้ Eclipse Galileo และ JUnit4 launcher


1
โค้ดของคุณถูกคอมไพล์ด้วยอ็อพชัน -g เพื่อสร้างข้อมูลการดีบักในไฟล์. class หรือไม่ แน่นอนว่าจำเป็น
duffymo

ใช่มันถูกรวบรวมด้วยตัวเลือก -g
รอย

คุณสามารถเพิ่มข้อมูลเกี่ยวกับ JUnit และ JRE ที่คุณใช้อยู่ได้หรือไม่? ฉันเชื่อว่ามีประโยชน์ในบริบทนี้
Vineet Reynolds

JDK ที่ใช้มีความสำคัญมากกว่า (มี JDK ที่ยุ่งเหยิงซึ่งอาจทำให้เกิดสิ่งนี้ได้) โปรดเพิกเฉยต่อข้อความค้นหาในเวอร์ชันของ JUnit
Vineet Reynolds

ขออภัยฉันควรจะรวมไว้ด้วย JDK 1.6 update 14.
รอย

คำตอบ:


39

นี้อาจจะเกี่ยวข้องกับหนึ่งในข้อบกพร่องในJDK 6 ปรับปรุง 14 ตามที่ระบุไว้ในบันทึกประจำรุ่นสำหรับ JDK 6 ปรับปรุง 15

หากสิ่งนี้กลายเป็นปัญหาจริงๆคุณควรย้ายไปใช้ JDK เวอร์ชันที่สูงกว่า (ซึ่งไม่มีการรับประกันใด ๆ เนื่องจากมีการเผยแพร่การแก้ไขกับ 6u16, 6u18 และ 7b1 ) ทางออกที่ดีที่สุดคือใช้แฟล็ก -XX: + UseParallelGC การเพิ่มขนาดของขนาดฮีปต่ำสุดและสูงสุดเพื่อชะลอ GC แรกให้บรรเทาชั่วคราว

ยังไงก็ตามให้ใช้รายงานข้อผิดพลาดนี้ใน Eclipseเพื่อติดตามว่าคนอื่นมาไกลแค่ไหน


1
ฉันอัปเกรดเป็น JDK 1.6 อัปเดต 16 ตอนนี้มันหยุดที่จุดพักทั้งหมดที่ฉันตั้งไว้ ขอบคุณมาก ๆ สำหรับความช่วยเหลือของคุณ.
รอย

ยินดีต้อนรับ u16 ดูเหมือนจะเป็นรุ่นที่ได้รับการแก้ไขในระดับที่ดีพอแม้จะมีบันทึกประจำรุ่นของ u15 ก็ตาม
Vineet Reynolds

ขอบคุณ @Vineet - ฉันกำลังดึงผมออกจากอันนี้ :-)
Jim Garrison

@VineetReynolds: ฉันได้เห็นคำตอบที่มีค่าของคุณเกี่ยวข้องกับ Jboss และ Java ee 6. คุณสามารถช่วยฉันแก้ปัญหานี้ได้หรือไม่? stackoverflow.com/questions/28954323/…
พายุสมอง

99

การแก้ไขอาจทำได้ง่ายเพียงแค่คลิกเรียกใช้ / ข้ามจุดพักทั้งหมด ทำงานให้ฉัน


3
ฉันใช้เวลาสามวันกว่าจะเห็นว่าฉันคลิกอย่างนั้น
henry

1
ขอบคุณ ... ต้องคลิกไอคอนแถบเครื่องมือนั้นโดยไม่ได้ตั้งใจ :-P
kenyee

4
ขอบคุณ ... ไม่รู้ว่าเมื่อไหร่ที่คลิก
njfife

1
ขอบคุณมาก. สำหรับผู้ใช้รายอื่นในสถานการณ์เช่นนี้หากคุณสร้างเบรกพอยต์จะมีการเฉือน
saurabheights

เช่นเดียวกันกับฉัน ไม่เคยคลิกเลย ... !! เวอร์ชัน: Mars Release (4.5.0) รหัสรุ่น: 20150621-1200
Beezer

52

ตรวจสอบให้แน่ใจว่าภายใต้ Run> Debug Configurations ได้เลือก 'Stop in main' ไว้หากเกี่ยวข้องกับสถานการณ์ของคุณ


1
โปรดอ่านคำตอบก่อนหน้านี้ก่อนโพสต์ ปัญหาคือเวอร์ชัน jvm .. และได้รับการแก้ไขเมื่อสามปีก่อน ดีที่สุดที่จะไม่รื้อฟื้นชุดข้อความเก่าเว้นแต่คำตอบของคุณจะมีส่วนสำคัญซึ่งยังไม่ได้กล่าวถึงในคำตอบก่อนหน้านี้
Leigh

6
ขอบคุณ. @ ผู้ตอบคำตอบของคุณช่วยแก้ปัญหาของฉันได้ เป็นเรื่องแปลกที่ไม่ได้ตั้งค่า "Stop in main"
Yu Shen

25
ดูเหมือนว่าคำตอบของเขามีส่วนสำคัญที่ยังไม่ได้กล่าวถึงในคำตอบก่อนหน้านี้ :)
scubbo

หมายเหตุนี่เป็นตัวเลือกสำหรับแอปพลิเคชัน Java แต่ไม่ใช่แอปพลิเคชัน Android
Noumenon

21

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

การรีสตาร์ท Eclipse ล้างโปรเจ็กต์ทั้งหมดและสร้างใหม่ทุกอย่างมักจะเคลียร์สิ่งต่างๆ ฉันยังมีปลั๊กอิน Maven (รุ่นเก่ากว่า ... ไม่ได้ใช้มาระยะหนึ่งแล้ว) ซึ่งมีแนวโน้มที่จะทำเช่นนั้นเช่นกัน

มิฉะนั้นอาจเป็นข้อผิดพลาดบางที Vineet ระบุไว้

หวังว่านี่จะช่วยได้


แท้จริงแล้วสิ่งที่คุณระบุไว้เกิดขึ้นมากขึ้นใน IDE ที่ไม่ได้ทำการคอมไพล์โค้ดใหม่โดยอัตโนมัติ พบ Oracle JDeveloper (จากประสบการณ์ส่วนตัว) และในระดับที่น้อยกว่า (Netbeans)
Vineet Reynolds

1
คำปรึกษาที่ดี. พูดไม่พอ บางครั้งเราคิดว่าปัญหานี้มากเกินไปและมันเป็นเพียงระบบที่ไม่สามารถซิงค์ได้ เช่นการรีบูตเครื่องคอมพิวเตอร์สำหรับปัญหาในการแก้ไขปัญหาง่ายๆ
Xonatron

ขอบคุณนั่นคือปัญหาในกรณีของฉัน มันฟังดูโง่ แต่ความเรียบง่ายและ F5 หลังจากงานสร้างเสร็จสิ้น
jfajunior

20

คุณอาจข้ามจุดพักทั้งหมดในแถบเครื่องมือ Eclipse โดยไม่ได้ตั้งใจ ในการแก้ไขปัญหานี้ให้ไปที่ Eclipse -> Run -> Skip All Breakpoints


1
Arggh มีทางลัดสำหรับสิ่งนี้เช่นกันฉันส่วนใหญ่อาจไม่ได้ตรวจสอบรายการเมนูโดยบังเอิญ แต่ฉันค่อนข้างจะกด Ctrl + Alt + B ขอบคุณอย่างไรก็ตาม
Patru


2

ในการดีบักเกอร์ทำงานกับรีโมตไฟล์ java .class ต้องเป็นไปตามพร้อมกับข้อมูลการดีบัก ถ้าตัวเลือก" -g: none " ถูกส่งไปยังคอมไพเลอร์ไฟล์คลาสจะไม่มีข้อมูลที่จำเป็นดังนั้นดีบักเกอร์จะไม่สามารถจับคู่เบรกพอยต์ในซอร์สโค้ดกับคลาสนั้นในระยะไกลได้ ในขณะเดียวกันหากไฟล์ jar / class ถูกทำให้สับสนก็จะไม่มีข้อมูลการดีบัก จากคำตอบของคุณส่วนใหญ่อาจไม่ใช่กรณีของคุณ แต่ข้อมูลนี้อาจเป็นประโยชน์สำหรับผู้อื่นที่ประสบปัญหาเดียวกัน


2

ในกรณีของฉันปัญหาคือฉันไม่ได้เปิดมุมมองดีบักในมุมมองการดีบักดังนั้น:

1 - ตรวจสอบให้แน่ใจว่าคุณได้เปิดมุมมองการดีบักแล้ว:

eclipse debugger ไม่ทำงาน 1

2 - ตรวจสอบให้แน่ใจว่าคุณได้เปิดมุมมองการแก้ไขข้อบกพร่องแล้ว:

eclipse debugger ไม่ทำงาน 2




1

เกิดขึ้นกับฉันครั้งหนึ่งเมื่อฉันยกเลิกการเลือก "เรียกใช้> สร้างอัตโนมัติ" และลืมตรวจสอบอีกครั้ง


1

ตรวจสอบให้แน่ใจว่าคุณประกาศแพ็กเกจที่ด้านบน ในโค้ด groovy ของฉันสิ่งนี้จะหยุดที่จุดพัก:

package Pkg1

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

สิ่งนี้ไม่ได้หยุดที่จุดพัก:

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

หลังจากดิ้นรนมากสิ่งนี้ก็ช่วยแก้ปัญหาของฉันได้ ขอบคุณ +1
Federico Piazza

0

ในการลบเบรกพอยต์ :

  1. แก้จุดบกพร่องของชั้นเรียนเป็นการทดสอบจูนิท
  2. เมื่อโปรแกรมแก้ไขข้อบกพร่องของคุณหยุดให้คลิกแท็บ "เบรกพอยต์" ถัดจาก "ตัวแปร" และ "นิพจน์"
  3. ที่ด้านขวาบนของแท็บเบรกพอยต์ให้คลิกปุ่มที่มี 'X' สองตัว
  4. หยุดการทดสอบแทนที่เบรกพอยต์ของคุณและเรียกใช้ดีบักเกอร์อีกครั้ง

0

ตรวจสอบด้วยว่าเบรกพอยต์ในบรรทัดอื่นทำงานหรือไม่อาจเป็นจุดบกพร่องในตัวดีบักเกอร์ ฉันมีปัญหากับดีบักเกอร์ Eclipse ที่การวางเบรกพอยต์ในการกำหนดบูลีนซึ่งรหัสอยู่ในบรรทัดถัดไปไม่ได้ผลฉันรายงานสิ่งนี้ที่นี่แต่วางไว้ในบรรทัดก่อนหน้าหรือถัดไปทำ


0

หากไม่มีอะไรทำงาน -

  1. ลบการกำหนดค่าการดีบักระยะไกล / ท้องถิ่นนั้นและสร้างใหม่
  2. เพิ่มแหล่งที่มาในการกำหนดค่าการดีบัก

0

ปัญหาที่เป็นไปได้อีกประการหนึ่งคือพอร์ตดีบักเกอร์อาจถูกบล็อกโดยไฟร์วอลล์ ตัวอย่างเช่นฉันใช้ mule anypoint studio (v 5.4.3) พอร์ตดีบักเกอร์เริ่มต้นคือ 6666 เมื่อโฟลว์ถูกเรียกใช้งานจะไม่หยุดที่เบรกพอยต์ เมื่อฉันเปลี่ยนพอร์ตเป็นพอร์ตอื่น (เช่น 8099) มันก็ใช้งานได้ดี


0

ไปที่Right click->Debug Configurationและตรวจสอบว่ามีการสร้างอินสแตนซ์ดีบักมากเกินไปหรือไม่ ปัญหาของฉันได้รับการแก้ไขเมื่อฉันลบอินสแตนซ์การดีบักหลายรายการออกจากการกำหนดค่าและเริ่มการดีบักใหม่


0

หากคุณอยู่ใน Eclipse

คลิกขวาที่โฟลเดอร์โครงการของคุณภายใต้ "Package Explorer"

Goto Source -> ทำความสะอาดและเลือกโครงการของคุณ

วิธีนี้จะล้างความยุ่งเหยิงและจุดพักของคุณควรใช้งานได้แล้ว



0

ในกรณีของฉันฉันมีหลายโครงการในพื้นที่ทำงานเดียวกัน ไฟล์ java ที่ฉันพยายามดีบักมีอยู่ในมากกว่าหนึ่งโปรเจ็กต์ที่มีแพ็คเกจเดียวกัน

ฉันไม่ต้องการโครงการอื่นดังนั้นเพียงแค่ปิดโครงการที่ไม่เกี่ยวข้อง (หรือลบไฟล์ออกจากโครงการที่ไม่เกี่ยวข้อง)


0

ความคิดเห็นเพิ่มเติมหนึ่งข้อเกี่ยวกับคำตอบของ Vineet Reynolds

ผมพบว่าผมต้องตั้ง-XX:+UseParallelGCในeclipse.ini

ฉันตั้งค่าอาร์กิวเมนต์เครื่องเสมือน (vm) ดังนี้

-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms512m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=256M
-XX:MaxPermSize=512M

ที่แก้ปัญหาได้


-2

นี่คือสิ่งที่เหมาะกับฉัน:

ฉันต้องใส่ที่อยู่เซิร์ฟเวอร์ภายในของฉันในการกำหนดค่าเซิร์ฟเวอร์ PHPดังนี้:

ป้อนคำอธิบายภาพที่นี่

หมายเหตุ : ที่อยู่นั้นเป็นที่อยู่ที่ฉันกำหนดค่าในไฟล์Apache .confของฉัน

บันทึก : เบรกพอยต์เดียวที่ใช้งานได้คือ 'เบรกพอยต์ที่บรรทัดแรก' หลังจากนั้นเบรกพอยต์ก็ไม่ทำงาน

หมายเหตุ : ตรวจสอบคุณสมบัติxdebugในไฟล์ php.iniของคุณและลบสิ่งที่คุณคิดว่าไม่จำเป็น


1
ฉันไม่เห็นว่าสิ่งนี้ตอบคำถามอย่างไร (เกี่ยวกับการดีบัก JUnit และ Java)
Newtopian
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.