- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Remote-Debugging ItelliJ Idea
Halo zusammen,
ich baue aktuell ein Modul.
Der FS Server lรคuft lokal und ich wรผrde gerne das Remote-Debugging nutzen. Das FSM wird mit Ant gebaut.
Ich deploye das Modul und kann mich erfolgreich per Remote Debug Konfiguration auf localhost:50005 verbinden.
Das einzige Problem: der Debugger stoppt nicht und springt in die von mir gesetzten Breakpoints..
Hatte jemand ggf. bereits dieses / ein รคhnliches Problem?
Was ich schon versucht habe:
- .idea Verzeichnis gelรถscht, Projekt neu erstellt
- IntelliJ caches invalidated & restarted
- Modul mehrfach neu gebaut & deployed
LG
- Labels:
-
Developers
-
Knowledgebase
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Thomas,
das kommt drauf an... Wenn Du irgendeine Art von Benutzerinteraktion brauchst, funktioniert es nicht als Auftrag. Das einfachste wรคre eher, einfach den SA im Debug-Modus zu starten. D.h. eine weitere Run config anlegen aber vom Typ "Application" mit der Main-Klasse de.espirit.firstspirit.client.CMSExplorer. Dafรผr muss die fs-client.jar im scope liegen und genau zur Server-Version passen.
Unter VM-Options kannst Du dann die folgenden Parameter nutzen:
-Dhost=localhost (FS host, in Deinem Fall ja localhost)
-Dmode=HTTP
-Dport=12345 (der Port, unter dem Du auch die FS Startseite aufrufst, NICHT der Debug-Port des Servers!)
-Dlogin=plain
-Dlogin.user=*****
-Dlogin.password=****
-Dlocale=de
-DdevMode=1
-Dproject="PROJEKTNAME"
Der Vorteil der Variante "SA im Debug mode" ist, dass Du das Modul nicht jedes Mal bei einer รnderung neu installieren musst um es zu testen. Beim start als "Debug" werden nรคmlich immer die LOKALEN Klassen benutzt. Macht das Entwickeln um einiges leichter. Wichtig ist nur, dass das Modul einmal auf dem Server ist (letztlich wegen der module.xml).
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Thomas,
wie sehen denn die Eintrรคge in der fs-wrapper.conf aus wo Du den Debug-Modus aktiviert hast?
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
ich habe folgende Eintrรคge in der fs-wrapper.conf ergรคnzt:
# Java parameters for garbage collection
# set -Xmn to 40% of wrapper.java.maxmemory
wrapper.java.additional.12=-Xmn1600M
wrapper.java.additional.13=-XX:MetaspaceSize=500M
wrapper.java.additional.14=-XX:MaxMetaspaceSize=500M
wrapper.java.additional.15=-XX:InitialCodeCacheSize=128M
wrapper.java.additional.16=-XX:ReservedCodeCacheSize=128M
wrapper.java.additional.17=-XX:SurvivorRatio=1
wrapper.java.additional.18=-XX:SoftRefLRUPolicyMSPerMB=1
wrapper.java.additional.19=-XX:+DisableExplicitGC
wrapper.java.additional.20=-XX:+UseConcMarkSweepGC
wrapper.java.additional.21=-XX:+UseParNewGC
wrapper.java.additional.22=-XX:+CMSParallelRemarkEnabled
wrapper.java.additional.23=-XX:+CMSClassUnloadingEnabled
wrapper.java.additional.24=-XX:+NeverTenure
wrapper.java.additional.25=-XX:-UseLargePages
wrapper.java.additional.26=-Djava.rmi.dgc.leaseValue=3600000
wrapper.java.additional.27=-Xdebug
wrapper.java.additional.28=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=50005
wrapper.java.additional.29=
wrapper.java.additional.30=
wrapper.java.additional.31=
wrapper.java.additional.32=
wrapper.java.additional.33=
wrapper.java.additional.34=
wrapper.java.additional.35=
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Thomas,
sieht fรผr mich erstmal gut aus. Was genau versuchst Du denn zu debuggen? Falls es um ein CC-Plugin geht - lรคuft der CC im internen Jetty?
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
es geht um ein Migrations-Script, welches ich als FirstSpirit Script angefangen habe zu entwickeln, nun aber aufgrund der Komplexitรคt in ein Modul umgebaut habe.
Das FirstSpirit lรคuft lokal auf meinem Macbook.
Gruร
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Thomas,
gute Entscheidung - Beanshell-Scripte haben meiner Meinung nach eigentlich nichts in FS-Projekten zu suchen ๐
Als was startest Du das denn genau? In einem Auftrag oder im Client? Ist das ein Plugin, ein Executable oder was sonst fรผr ein Einstiegspunkt? Das Remote-Debugging hรคngt sich ja an den Server-Prozess. D.h. das Debugging funktioniert in dieser Form nur fรผr serverseitig ausgefรผhrten Code. Nicht alles was in einem Modul ist, lรคuft auf dem FS-Server ๐
Hรถrt sich fรผr mich fast so an als mรผsstest Du hier eher den SA im Debug-Modus starten. Zumindest wenn Du die Funktionalitรคt รผber den SA startest.
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
ich habe aktuell in meiner (momentan noch einzigen) Klasse das Executable Interface implementiert und starte meine Klasse per Einzeiler Script im FirstSpirit:
#! executable-class
de.q4u.migration.Importer
Das wรผrde dann nach meinem Verstรคndnis auf dem Server laufen, oder liege ich da falsch?
Gruร
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Thomas,
wenn Du mit diesem Einzeiler-Script eines meinst, dass Du unter "Scripte" angelegt hast und das รผber "Extras => Skript ausfรผhren" startest: Ja, da liegst Du falsch ๐
Es kommt letztlich immer auf den "Einstiegspunkt" an bzw. "wie und von wo" eine Funktion angetriggert wird. Auch ein Executable KANN serverseitig ausgefรผhrt werden. Das wรคre z.B. der Fall
- im Rahmen eines Auftrages (wenn dort ein Skript-Task definiert ist mit #!executable-class...)
- wenn das Executable als Renderscript benutzt wird (also aus dem Template heraus mit $CMS_RENDER(script:"...")$)
In Deinem Fall ist es aber eine ganz "normale" clientseitig ausgefรผhrte Funktion. Dass da letztlich eine Executable hinter steckt ist unerheblich.
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
okay, dann sieht das ganze natรผrlich anders aus
Gut zu wissen, vielen Dank fรผr die Info!
Der einfachste Weg das Remote-(Server)-Debugging zum Laufen zu bringen wรคre dann vermutlich nun der Weg รผber den Auftrag.
Ich wรผrde also dann einen Auftrag erstellen und in dem Auftrag lediglich eine Aktion welche dann das Executable startet, oder?
Diesen Auftrag kann ich ja genau wie aktuell mein Script aus dem SiteArchitekt heraus starten oder wรคre das dann wieder im Client Context? :smileygrin:
Hinzu kommt, dass eine serverseitige Ausfรผhrung bei der Komplexitรคt des Codes vermutlich auch mehr Sinn macht (von der Performance her vermute ich?).
Viele Grรผรe und vielen Dank jetzt schon mal, hat mir sehr geholfen!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Thomas,
das kommt drauf an... Wenn Du irgendeine Art von Benutzerinteraktion brauchst, funktioniert es nicht als Auftrag. Das einfachste wรคre eher, einfach den SA im Debug-Modus zu starten. D.h. eine weitere Run config anlegen aber vom Typ "Application" mit der Main-Klasse de.espirit.firstspirit.client.CMSExplorer. Dafรผr muss die fs-client.jar im scope liegen und genau zur Server-Version passen.
Unter VM-Options kannst Du dann die folgenden Parameter nutzen:
-Dhost=localhost (FS host, in Deinem Fall ja localhost)
-Dmode=HTTP
-Dport=12345 (der Port, unter dem Du auch die FS Startseite aufrufst, NICHT der Debug-Port des Servers!)
-Dlogin=plain
-Dlogin.user=*****
-Dlogin.password=****
-Dlocale=de
-DdevMode=1
-Dproject="PROJEKTNAME"
Der Vorteil der Variante "SA im Debug mode" ist, dass Du das Modul nicht jedes Mal bei einer รnderung neu installieren musst um es zu testen. Beim start als "Debug" werden nรคmlich immer die LOKALEN Klassen benutzt. Macht das Entwickeln um einiges leichter. Wichtig ist nur, dass das Modul einmal auf dem Server ist (letztlich wegen der module.xml).
Viele Grรผรe
Michael

