wake-up-neo.net

IntelliJ IDEA Der Debugger arbeitet nicht an einem Grails-Projekt

Ich kann meinen Code nicht in Intellij IDEA debuggen. Wenn der Debug-Modus aktiv ist und ausgeführt wird, bei den Haltepunkten jedoch nicht das "v" markiert ist, das einen gültigen und anhaltbaren Haltepunkt darstellt. 

Siehe das Bild: http://prntscr.com/1w0owu .

Ich suche wirklich im Internet nach einer Antwort. Was nehme ich an?

41
ricardogobbo

Ich habe alle hier genannten erfolglos ausprobiert .. Die einzige hilfreiche Information ist hier .

Im Wesentlichen sollten Sie die Ausführung mit Gabeln deaktivieren, indem Sie Folgendes zu grails-app/conf/BuildConfig.groovy hinzufügen: 

grails.project.fork = [
    test: false,
    run: false
]

Das Debuggen ist jetzt in IntelliJ IDEA Ultimate Edition v.12.1.6 nur über das gewöhnliche Debugging ohne Remote-Debugging verfügbar. _ Getestet auf Grails 2.3.1, Java 1.7.0_45, Windows 7 64-Bit.

74
Igors

Versuche dies:

Wählen Sie in der IdeeKonfigurationen bearbeitenaus der Liste neben der Schaltfläche "Ausführen". Fügen Sie dannRemotehinzu, wählen Sie Ihren Namen und belassen Sie die Standard-Remote-Konfigurationseinstellungen. (Port 5005 usw.)

Führen Sie Ihre App über die Konsole aus

grails run-app --debug-fork

Wählen Sie in der Idee Ihre Konfiguration aus der Liste aus und klicken Sie auf die Debug-Schaltfläche, wenn die Konsole Informationen anzeigt:

Listening for transport dt_socket at address: 5005
18
akn

Da Grails 2.3, verzweigte Ausführung für mehrere Grails-Befehle (z. B. run-app, test-app) eingeführt wurde . Wenn Sie eine Grails-Anwendung nur mit IntelliJ IDEA debuggen, wird der Prozess GrailsStarter mit gestartet Debug-Optionen auf. Die Ausgabe auf der IDEA - Konsole lautet:

/usr/lib/jvm/default-Java/bin/Java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:59935,suspend=y,server=n [...] /opt/idea-IU-133.330/lib/idea_rt.jar org.codehaus.groovy.grails.cli.support.GrailsStarter [...] run-app Connected to the target VM, address: '127.0.0.1:59935', transport: 'socket'

Die Anwendung selbst wird in einem separaten Prozess namens ForkedTomcatServer gestartet. Hier wird Ihr Code ausgeführt und der Debugger sollte tatsächlich eine Verbindung herstellen.

Um dies zu erreichen, setzen Sie debug: true in BuildConfig.groovy in der run-Konfiguration von grails.project.fork. Führen Sie einfach Grails jetzt von IDEA aus (debuggen Sie nicht) und Sie sehen die folgende Zeile in der Konsole, wenn die Anwendung HTTP-Anforderungen bereitstellt:

Listening for transport dt_socket at address: 5005

Hier möchten Sie eine separate remote run configuration anleiten. Sobald Ihr Remote-Debugger eine Verbindung hergestellt hat, geben Sie eine HTTP-Anforderung aus, und das Debugging funktioniert.

Sie können auch gegabelte Ausführung deaktivieren für Grails-Befehle zum Kompilieren/Testen/Ausführen/War/Konsolen vollständig ausführen, indem Sie den mit dem Befehlseintrag in grails.project.fork verbundenen Wert auf false setzen. Dann verlieren Sie jedoch die Vorteile für die gegabelte Ausführung, die in Grails 2.3 hinzugefügt wurde.

8
jack_kerouac

Das Debuggen einer Grails-Anwendung (2.3+) kann auf zwei Arten erfolgen.

1. Einfache Lösung: Debuggen deaktivieren

bearbeite BuildConfig.groovy:

grails.project.fork = [
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...
    run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...

zu

grails.project.fork = [
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...
    run: false,

Vorteile:

  • Einfach zu machen (und mit Ihrer Entwicklung fortzufahren)

Nachteile:

  • Dadurch wird die Möglichkeit zum Ersetzen des Laufzeitcodes aufgehoben. Das heißt, wenn Sie den Code ändern, wird er nicht mehr automatisch abgeholt und Sie müssen die Anwendung neu starten, um die Änderungen zu sehen. Dies kann sehr zeitaufwändig sein.

2. Beteiligte Lösung: Debug-Forked-Runtime

Dies ist eine etwas komplexere Lösung, bei der Sie einen Debugger an eine ausgeführte Grails-Anwendung anhängen. Es wird genauer beschrieben in diesem Blog-Beitrag .

Nach dem Setup haben Sie eine zusätzliche Ausführungskonfiguration, mit der Sie Grails im Forked-Modus starten können, und eine weitere zusätzliche Ausführungskonfiguration, mit der Sie den Forked-Modus debuggen können. Der Haken ist, dass Sie beide starten müssen oder es funktioniert nicht.

Vorteile:

  • Sie haben sowohl das Debuggen als auch das Ersetzen des Laufzeitcodes
  • Dies beeinträchtigt nicht das Starten der Anwendung im normalen Modus. (d. h. Sie haben zusätzliche Optionen)

Nachteile:

  • Das Einrichten dauert ein bisschen
  • Das Starten im Debug-Modus erfordert einen komplexeren zweistufigen Prozess (d. H. Es dauert länger).

Überlegungen

Lösung 2 ist meistens in dem Sinne überlegen, dass sie Flexibilität ermöglicht. Ich persönlich benutze Debug nicht viel, also starte einfach im normalen Modus. Wenn ich debuggen möchte, starte ich im Debug-Modus neu.

Lösung 1 ist strikt besser, wenn Sie debuggen müssen und auch viel neu starten müssen. Zum Beispiel, wenn Sie in Ihrem BootStrap.groovy an Ihren Domänenklassen oder Datenbank-Setups arbeiten.

6
GhostEcho

Hast du diesen Artikel gesehen? Es wird detailliert beschrieben, wie ich Schritt für Schritt vorbeikomme und mich an meinem Problem vorbeigezogen habe.

http://mrhaki.blogspot.com/2013/12/grails-goodness-debugging-app-in-forked.html

4
Peter Kahn

Bei Grails 3.x funktioniert 2016 keine der anderen Antworten mit Intellij 15.0.4. Das funktioniert für mich:

Starten Sie grails in intellij mit diesem Befehl:

run-app  --debug-jvm

Die Konsole sollte Folgendes ausgeben: .__ "Transport auf dt_socket an Adresse: 5005 Grails-Anwendung, die unter http: // localhost: 8080 in Umgebung: Entwicklung ausgeführt wird"

Jetzt können Sie in Intellij eine neue Konfiguration des Typs "Remote" hinzufügen. Dann starten Sie es mit seinen Standardeinstellungen.

Das neue Debug-Konsolenfenster sollte Folgendes schreiben: "Verbunden mit der Ziel-VM, Adresse: 'localhost: 5005', transport: 'socket'"

Erledigt.

Für Interessenten ist der Verweis auf grails 3.x-Dokumentation zum Starten eines debuggbaren Servers in Abschnitt 2.8 ausgeführt: runningAndDebuggingAnApplication:

http://grails.github.io/grails-doc/3.1.x/guide/gettingStarted.html#runningAndDebuggingAnApplication

"Es gibt mehrere Möglichkeiten, die Application-Klasse auszuführen. Wenn Sie eine IDE verwenden, können Sie einfach mit der rechten Maustaste auf die Klasse klicken und sie direkt von Ihrer IDE aus ausführen, wodurch Ihre Grails-Anwendung gestartet wird. Dies ist auch für das Debuggen hilfreich, da Sie direkt von der IDE aus debuggen können, ohne einen Remote-Debugger anschließen zu müssen, wenn Sie den Befehl run-app --debug-jvm über die Befehlszeile verwenden. "

Wichtige Notiz. Als ich versucht habe, "einfach mit der rechten Maustaste auf die Klasse zu klicken und sie direkt von Ihrer IDE aus auszuführen", wurde die App gestartet. Alle Anfragen, die ich an meinen Controller schickte, führten jedoch zu 500 Fehlern mit der Meldung: "Ansicht mit Namen '/ myendpoint' im Servlet mit Namen 'grailsDispatcherServlet' konnte nicht aufgelöst werden.

Also bin ich auf die obigen Anweisungen zurückgekommen. 

4
Ed J

Mit Grails 3 und Idea (2016.1) ist dies eine sehr einfache Angelegenheit. Sie müssen keine Dateien mehr bearbeiten, wie in den anderen Antworten empfohlen.

Aus irgendeinem Grund ist das Debug-Symbol in der Idea-Symbolleiste grau hinterlegt, sodass Sie nur zu Ihrem Anwendungseinstiegspunkt (der Klasse, die die statische void-Hauptmethode hat, mit der die Anwendung gestartet wird) navigieren und auf einen der Ausführungspfeile klicken die linke Gutter und wählen Sie die Debug-Option.

Aus den JetBrains-Dokumenten:

https://www.jetbrains.com/help/idea/2016.1/getting-started-with-grails-3.html

Debuggen der Grails 3-Anwendung

Mit IntelliJ IDEA können Sie Ihre Grails 3-Anwendung mit .__ debuggen. Anwendung.groovy.

Öffnen Sie im Projekttool-Fenster das init-Verzeichnis und klicken Sie mit der rechten Maustaste auf Application.groovy Wählen Sie aus der Dropdown-Liste Debug Grails: 'name' grails3_debug_app Mit dem Editor können Sie auch das Debugging starten verarbeiten.

2
pmcollins

Ich habe es mit Grails 2.3.4 auf Mac Os x Lion getestet.

Dann habe ich den Rat von Igors ausprobiert und er arbeitet ohne gegabelten Modus.

grails.project.fork = [
    test: false,
    run: false
]

Bitte überprüfen Sie die Details grails Dokumentation

wenn Sie den gegabelten Modus debuggen möchten, sollten Sie den folgenden Blogeintrag gut erklären. 

http://blog.jdriven.com/2013/12/grails-goodness-debugging-app-forked-mode/

1
daimon

Nur drei Vermutungen:

Versuchen Sie, run-app und nicht run-war auszuführen. Beide sollten funktionieren, aber run-war funktioniert möglicherweise nicht.

Oder: Versuchen Sie, von der Konsole aus remote zu debuggen:

grails -debug run-app und verbinden Sie sich dann mit Remote Debug in Idea.

Oder, der letzte Ausweg: ein Downgrade Ihres Projekts auf frühere Grails-Versionen könnte funktionieren. Ja, das ist wirklich nervig.

Hoffe das hilft.

1
Andrey Chaschev

Checkout this Blog zum Debuggen von Grails Forked Mode.

0
biniam

Dies sollte nicht immer die Standardkonfiguration sein und nur der Wahl der Person überlassen. Es ist ein verdammter Schmerz, zwei Konfigurationen auszuführen, indem man dieses Ding im Debug-Modus in Intellij laufen lässt. Zuerst müssen Sie die normale Laufkonfiguration einrichten oder ändern, indem Sie "--debug-fork" nach der run-app hinzufügen. Zweitens müssen Sie das Remote-Debugging konfigurieren und dabei alle Standardeinstellungen übernehmen. Dann müssen Sie die Laufkonfiguration ausführen und wenn dies ausgeführt wird, führen Sie die Debug-Konfiguration aus. Was für ein Schmerz. Ich ziehe es vor, auf das Laufen ohne die gegabelte Option während der Entwicklung zu verzichten. Zeit ist Geld und ich habe keine Zeit, herumzusehen. Siehe hierzu die Erklärung von Mr.HAKI. http://blog.jdriven.com/2013/12/grails-goodness-debugging-app-forked-mode/

0
Beaumont Muni