เป็นไปได้หรือไม่ที่จะแนบดีบักเกอร์ IntelliJ IDEA กับกระบวนการ Java ที่กำลังรันอยู่ ถ้าใช่เป็นอย่างไร
เป็นไปได้หรือไม่ที่จะแนบดีบักเกอร์ IntelliJ IDEA กับกระบวนการ Java ที่กำลังรันอยู่ ถ้าใช่เป็นอย่างไร
คำตอบ:
ใช่ นี่คือวิธีการตั้งค่า
สร้างการกำหนดค่าการเรียกใช้ระยะไกล:
การกำหนดค่าด้านบนมีสามฟิลด์แบบอ่านอย่างเดียว ตัวเลือกเหล่านี้คือตัวเลือกที่แจ้งให้ JVM เปิดพอร์ต 5005 สำหรับการดีบักแบบรีโมทเมื่อใช้งานแอปพลิเคชันของคุณ เพิ่มอันที่เหมาะสมลงในตัวเลือก JVM ของแอ็พพลิเคชันที่คุณกำลังดีบัก วิธีหนึ่งที่คุณอาจทำเช่นนี้จะเป็นเช่นนั้น:
export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
แต่ขึ้นอยู่กับว่าคุณใช้งานแอพพลิเคชั่นอย่างไร หากคุณไม่แน่ใจว่าข้อใดในสามข้อที่มีผลกับคุณให้เริ่มจากข้อแรกและไปที่รายการจนกว่าคุณจะพบสิ่งที่ใช้ได้
คุณสามารถเปลี่ยนsuspend=n
เป็นsuspend=y
บังคับให้แอปพลิเคชันของคุณรอจนกว่าคุณจะเชื่อมต่อกับ IntelliJ ก่อนที่จะเริ่มต้นขึ้น สิ่งนี้มีประโยชน์หากเบรกพอยต์ที่คุณต้องการเกิดขึ้นเมื่อเริ่มต้นแอปพลิเคชัน
เริ่มแอปพลิเคชันของคุณตามปกติจากนั้นใน IntelliJ เลือกการกำหนดค่าใหม่และกด 'ดีบั๊ก'
IntelliJ จะเชื่อมต่อกับ JVM และเริ่มการดีบักแบบรีโมท
ตอนนี้คุณสามารถดีบักแอปพลิเคชันโดยเพิ่มจุดพักในรหัสของคุณตามที่ต้องการ ผลลัพธ์ของแอปพลิเคชันจะยังคงปรากฏขึ้นทุกที่ก่อนหน้านี้ แต่จุดพักของคุณจะเข้าสู่ IntelliJ
Remote
ไม่พร้อมใช้งานในรุ่นชุมชนหรือไม่ ฉันใช้เวอร์ชั่นที่ต้องชำระเงิน ทุกคนที่มีรุ่นชุมชนยืนยันได้ไหม
System.out.println
ใน IntelliJ เมื่อทำการดีบักแบบรีโมทหรือไม่
เป็นไปได้ แต่คุณต้องเพิ่มค่าสถานะ JVM บางอย่างเมื่อคุณเริ่มโปรแกรมประยุกต์ของคุณ
คุณต้องเพิ่มการกำหนดค่าการดีบักระยะไกล: แก้ไขการกำหนดค่า -> ระยะไกล
จากนั้นคุณจะพบในหน้าต่างข้อความที่ปรากฏซึ่งคุณต้องเพิ่มไปยังการทำงานของโปรแกรมเช่น:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
จากนั้นเมื่อเปิดใช้งานแอปพลิเคชันของคุณคุณสามารถแนบดีบักเกอร์ได้ หากคุณต้องการให้แอปพลิเคชันของคุณรอจนกว่าดีบักเกอร์จะเชื่อมต่อให้เปลี่ยนสถานะ suspend เป็น y ( suspend=y
)
ใน AndroidStudio หรือความคิด
เพิ่ม "ที่อยู่" ตัวเลือกของ VM "ตั้งค่าการ
“-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005”
จดจำ" ที่อยู่ "
นอกจากนี้อย่าลืมว่าคุณต้องเพิ่มการตั้งค่าสถานะ "-Xdebug" ในแอป JAVA_OPTS หากคุณต้องการเชื่อมต่อในโหมดแก้ไขข้อบกพร่อง
นอกจากนี้ฉันยังใช้แอพ Tomcat GUI (ในกรณีของฉัน: C: \ tomcat \ bin \ Tomcat9w.bin)
ไปที่แท็บJava :
ตั้งค่าคุณสมบัติ Java ของคุณตัวอย่างเช่น:
เครื่องเสมือน Java
C: \ Program Files \ Java \ jre-10.0.2 \ bin \ server \ jvm.dll
เครื่องเสมือน Java
C: \ คราว \ bin \ bootstrap.jar; C: \ คราว \ bin \ คราว-juli.jar
ตัวเลือก Java :
-Dcatalina.home = c: \ คราว
-Dcatalina.base = C: \ คราว
-Djava.io.tmpdir = C: \ คราว \ Temp
-Djava.util.logging.config.file = C: \ คราว \ conf \ logging.properties
-agentlib: jdwp = = ขนส่ง dt_socket เซิร์ฟเวอร์ y = ระงับ = n ที่อยู่ = *: 8000
ตัวเลือก Java 9 :
--add-เปิด = java.base / java.lang = ทั้งหมดไม่มีชื่อ
--add-เปิด = java.base / java.io = ทั้งหมดไม่มีชื่อ
--add-เปิด = java.rmi / sun.rmi.transport = ทั้งหมดไม่มีชื่อ