แนบดีบักเกอร์ IntelliJ IDEA กับกระบวนการ Java ที่รันอยู่


237

เป็นไปได้หรือไม่ที่จะแนบดีบักเกอร์ IntelliJ IDEA กับกระบวนการ Java ที่กำลังรันอยู่ ถ้าใช่เป็นอย่างไร


3
แน่นอน. คุณต้องสร้างการกำหนดค่า Run / Debug "Remote" เพิ่มเติมได้ที่นี่
Vic

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

คำตอบอยู่ที่นี่: stackoverflow.com/questions/51207430/…
RoutesMaps.com

คำตอบ:


373

ใช่ นี่คือวิธีการตั้งค่า

เรียกใช้การกำหนดค่า

สร้างการกำหนดค่าการเรียกใช้ระยะไกล:

  1. เรียกใช้ -> แก้ไขการกำหนดค่า ...
  2. คลิกที่ "+" ที่ด้านซ้ายบน
  3. เลือกตัวเลือก "ระยะไกล" ในบานหน้าต่างด้านซ้ายสุด
  4. เลือกชื่อ (ฉันตั้งชื่อฉันว่า "remote-debugging")
  5. คลิก "ตกลง" เพื่อบันทึก:

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

ตัวเลือก JVM

การกำหนดค่าด้านบนมีสามฟิลด์แบบอ่านอย่างเดียว ตัวเลือกเหล่านี้คือตัวเลือกที่แจ้งให้ 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


2
ตัวเลือก "ระยะไกล" ไม่ปรากฏใน Intellij IDEA 15.0.2 ของฉันใน mac os el capitan ฉันจะรับตัวเลือกนั้นได้อย่างไร
674669

@ user674669 ฉันไม่แน่ใจ อาจRemoteไม่พร้อมใช้งานในรุ่นชุมชนหรือไม่ ฉันใช้เวอร์ชั่นที่ต้องชำระเงิน ทุกคนที่มีรุ่นชุมชนยืนยันได้ไหม
Cory Klein

@CoryKlein คุณรู้วิธีดึงเอาท์พุทจากSystem.out.printlnใน IntelliJ เมื่อทำการดีบักแบบรีโมทหรือไม่
Don Rhummy

1
@DonRhummy หากคุณทราบวิธีการฉันยินดีที่จะเพิ่มข้อมูลลงในคำตอบนี้ แต่ AFAIK IntelliJ ไม่สนับสนุนการวางท่อ stdout และ stderr จากแอปพลิเคชันระยะไกลกลับไปที่ IntelliJ
Cory Klein

หากเซิร์ฟเวอร์ระยะไกลสามารถเข้าถึงได้ผ่าน ssh เราจะระบุไฟล์คีย์ได้อย่างไร
vach

44

เป็นไปได้ แต่คุณต้องเพิ่มค่าสถานะ JVM บางอย่างเมื่อคุณเริ่มโปรแกรมประยุกต์ของคุณ

คุณต้องเพิ่มการกำหนดค่าการดีบักระยะไกล: แก้ไขการกำหนดค่า -> ระยะไกล

จากนั้นคุณจะพบในหน้าต่างข้อความที่ปรากฏซึ่งคุณต้องเพิ่มไปยังการทำงานของโปรแกรมเช่น:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

จากนั้นเมื่อเปิดใช้งานแอปพลิเคชันของคุณคุณสามารถแนบดีบักเกอร์ได้ หากคุณต้องการให้แอปพลิเคชันของคุณรอจนกว่าดีบักเกอร์จะเชื่อมต่อให้เปลี่ยนสถานะ suspend เป็น y ( suspend=y)


มันทำให้ฉันสับสนว่าคุณแก้ไขอินพุตด้านล่างและจากนั้นอัปเดตสตริงตัวเลือกด้านบน (ใน 13.1 CE อย่างน้อย)
Carl G

7
อืมอาร์กิวเมนต์บรรทัดคำสั่งเหล่านี้จะอ่านได้ตั้งแต่ 14.0.2 เท่านั้น คุณสามารถแก้ไขได้สองสามอย่าง ความคิดวิธีการแก้ไขปัญหานี้?
nuzzolilo

1
นอกจากนี้คุณกำลังติดกระบวนการใดโดยตั้งค่าตัวเลือกเหล่านั้น
nuzzolilo

5
คนแรกทำงานให้ฉัน หมายเหตุถึงผู้อื่น - ฉันจำเป็นต้องระบุสิ่งนี้ก่อนแฟล็ก -jar
jim

2
@Nuzzolilo อาร์กิวเมนต์บรรทัดคำสั่งที่แสดงในแนวคิดนั้นมีจุดประสงค์เพื่อแสดงผลเท่านั้นและเป็นแบบอ่านอย่างเดียว ไม่ควรเพิ่มแนวคิดเหล่านั้น แต่เป็นแอปพลิเคชัน java ระยะไกลที่คุณต้องการดีบัก
พระพิฆเนศกฤษณะ

6

ใน AndroidStudio หรือความคิด

  1. กำหนดค่าแอปพลิเคชันจะถูกดีบักเปิดแก้ไขการกำหนดค่า

เพิ่ม "ที่อยู่" ตัวเลือกของ VM "ตั้งค่าการ “-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005” จดจำ" ที่อยู่ "

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

  1. กำหนดค่า Remote Debugger หากไม่ออกให้คลิก + เพื่อเพิ่ม

ระบุ "พอร์ต" เหมือนกับที่อยู่ในขั้นตอนที่ 1 " ป้อนคำอธิบายรูปภาพที่นี่


6

นอกจากนี้อย่าลืมว่าคุณต้องเพิ่มการตั้งค่าสถานะ "-Xdebug" ในแอป JAVA_OPTS หากคุณต้องการเชื่อมต่อในโหมดแก้ไขข้อบกพร่อง


0

นอกจากนี้ฉันยังใช้แอพ 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 = ทั้งหมดไม่มีชื่อ

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