[Java/Eclipse] Remote debug van multi-threaded applicatie

Pagina: 1
Acties:

  • ari3
  • Registratie: Augustus 2002
  • Niet online
Ik tracht een multi-threaded applicatie te debuggen vanuit Eclipse 3.2, maar heb problemen met het debuggen van dynamisch aangemaakte threads in de remote applicatie.

De remote applicatie heeft de volgende parameters meegekregen voor de Sun JVM (1.5)
code:
1
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

Vanuit Eclipse heb ik natuurlijk een remote debug sessie opgezet. Ik zie de main thread met status (Running) in het debug-tabblad. Verder heb ik een aantal breakpoints gezet. Dit werkt ook: als de main thread een breakpoint passeert dan wordt de main thread suspended en kun je door de code stappen.

Maar dit lukt niet: wanneer de remote applicatie een nieuwe thread aanmaakt doen breakpoints echter helemaal niets. De nieuwe thread wel is wel (kort) zichtbaar in het Debug-tabblad, maar het breakpoint wordt niet gehonoreerd en de thread suspend dus ook niet waardoor debuggen dus onmogelijk is.

Ik dacht dat een nieuwe thread gewoon hoort te suspended als een breakpoint wordt gepasseerd? Wat heb ik gemist? Hoe kun je multi-threaded applicatie debuggen vanuit Eclipse?

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 12-02 12:22
Heb je ALLE code met breakpoints geconfigureerd op je remote debug configuratie? (Tabje source)

Ook kan het uitmaken als je code lokaal en remote met verschillende Java versies gecompileerd is. Eclipse gebruikt standaard niet de SUN java compiler, maar een eigen ding.

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 14-02 06:32

Nick_S

++?????++ Out of Cheese Error

The - DDD schreef op woensdag 16 augustus 2006 @ 16:33:
Eclipse gebruikt standaard niet de SUN java compiler, maar een eigen ding.
Volgens mij gebruikt Eclipse gewoon de JVM die op het path staat als virtuele machine en de compiler die je instelt onder JRE's in Eclipse. Ook onder configuration staan alleen maar verwijzingen naar de Sun implementatie.

Heb je hier meer informatie over of was dit misschien alleen in eerdere versies van Eclipse?

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


  • pgussow
  • Registratie: Maart 2003
  • Laatst online: 18-08-2025
Weet je ook zeker dat wel de code in die threads aangeroepen word? maw: heb je je breakpoint direct in de run() gezet? Als de thread heel even zichtbaar is betekend dat dat hij ook heel snel klaar is. Dus het klinkt alsof je run() code heel snel weer klaar is.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14-02 19:13
Nick_S schreef op woensdag 16 augustus 2006 @ 17:17:
Volgens mij gebruikt Eclipse gewoon de JVM die op het path staat als virtuele machine en de compiler die je instelt onder JRE's in Eclipse. Ook onder configuration staan alleen maar verwijzingen naar de Sun implementatie.
Je reactie is wat vreemd geformuleerd, omdat de JVM geen compiler is, maar om een lang verhaal kort te maken: Eclipse gebruikt een eigen implementatie van een incrementele compiler (wat die van Sun niet is), onderdeel van de JDT Core. Wél wordt een externe JRE gebruikt om code uit te voeren.

[ Voor 8% gewijzigd door Soultaker op 16-08-2006 21:41 ]


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 12-02 12:22
Inderdaad... Sterker nog, de Eclipse compiler in 3.2 is al volledig Java SE 6 (Mustang) compliant.

  • misfire
  • Registratie: Maart 2001
  • Laatst online: 12-10-2024
Heb je de code al toegevoegd aan de source configuratie? Zie hier voor een artikel wat remote debugging beschrijft. Of iets met Eclipse of met een andere compiler is gecompileerd zou niet zo gek veel uit mogen maken, zolang er maar debug symbols zijn toegevoegd.

Merk op dat je in een breakpoint in Eclipse ook kunt selecteren dat een breakpoint alleen in specifieke threads wordt geactiveerd (breakpoint properties > filtering). Misschien dat je daar nog iets hebt ingesteld?
Pagina: 1