Ich dachte, ich würde diese Antworten für OSX- und Linux-Anwender erweitern (nicht, dass sie es nötig hätten):
Ich bevorzuge die Verwendung von mvnDebug auch. Aber nach OSX maverick zerstört meine Java-Entwicklungsumgebung, ich bin von Grund auf neu und stubbled auf diesen Beitrag, und dachte, ich würde zu ihm hinzufügen.
$ mvnDebug vertx:runMod
-bash: mvnDebug: command not found
DOH! Ich habe es auf dieser Box nach dem neuen SSD-Laufwerk und/oder dem Zurücksetzen von Java, als ich Maverick installiert habe, nicht eingerichtet.
Ich verwende einen Paketmanager für OSX und Linux, daher habe ich keine Ahnung, wo mvn wirklich lebt. (Ich weiß es für kurze Zeit danke Gebräu Ich mag, dass ich das nicht weiß.)
Schauen wir mal:
$ which mvn
/usr/local/bin/mvn
Da bist du ja, du kleiner Mistkerl.
Wo sind Sie denn nun installiert worden?
$ ls -l /usr/local/bin/mvn
lrwxr-xr-x 1 root wheel 39 Oct 31 13:00 /
/usr/local/bin/mvn -> /usr/local/Cellar/maven30/3.0.5/bin/mvn
Aha! Sie haben also in /usr/local/Cellar/maven30/3.0.5/bin/mvn installiert. Du freches kleines Build-Tool. Ohne Zweifel durch Homebrew...
Haben Sie Ihren kleinen Kumpel mvnDebug dabei?
$ ls /usr/local/Cellar/maven30/3.0.5/bin/mvnDebug
/usr/local/Cellar/maven30/3.0.5/bin/mvnDebug
Gut. Sehr gut. Sehr gut. Alles läuft wie geplant.
Und jetzt bringen Sie den kleinen Mistkerl dahin, wo ich mich leichter an ihn erinnern kann.
$ ln -s /usr/local/Cellar/maven30/3.0.5/bin/mvnDebug /usr/local/bin/mvnDebug
ln: /usr/local/bin/mvnDebug: Permission denied
Du verfluchter Computer... Du wirst dich meinem Willen unterwerfen. Wisst Ihr, wer ich bin? Ich bin SUDO! VERBEUGEN!
$ sudo ln -s /usr/local/Cellar/maven30/3.0.5/bin/mvnDebug /usr/local/bin/mvnDebug
Jetzt kann ich es von Eclipse aus verwenden ( aber warum sollte ich das tun, wenn ich IntelliJ!!!! habe? )
$ mvnDebug vertx:runMod
Preparing to Execute Maven in Debug Mode
Listening for transport dt_socket at address: 8000
Intern verwendet mvnDebug dies:
MAVEN_DEBUG_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE \
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"
Sie können ihn also ändern (ich debugge normalerweise auf Port 9090).
Dieser Blog erklärt, wie man Eclipse Remote Debugging einrichtet (schauder)
http://javarevisited.blogspot.com/2011/02/how-to-setup-remote-debugging-in.html
Dito Netbeans
https://blogs.oracle.com/atishay/entry/use_netbeans_to_debug_a
Dito IntelliJ http://www.jetbrains.com/idea/webhelp/run-debug-configuration-remote.html
Hier finden Sie einige gute Dokumente über den Befehl -Xdebug im Allgemeinen.
http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html
"Xdebug aktiviert Debugging-Funktionen in der JVM, die von der Java Virtual Machine Tools Interface (JVMTI) verwendet werden. JVMTI ist eine Low-Level-Debugging-Schnittstelle, die von Debuggern und Profiling-Tools verwendet wird. Mit ihr können Sie den Zustand und die Ausführung von Anwendungen, die in der JVM laufen, überprüfen und kontrollieren.
"Die Teilmenge von JVMTI, die am häufigsten von Profilern verwendet wird, ist immer verfügbar. Die Funktionalität, die von Debuggern verwendet wird, um durch den Code zu schreiten und Haltepunkte zu setzen, ist jedoch mit einem gewissen Overhead verbunden und nicht immer verfügbar. Um diese Funktionalität zu aktivieren, müssen Sie die Option -Xdebug verwenden."
-Xrunjdwp:transport=dt_socket,server=y,suspend=n myApp
Sehen Sie sich auch die Dokumentation zu -Xrunjdwp an. Sie können es z.B. nur aktivieren, wenn eine bestimmte Ausnahme ausgelöst wird. Sie können es im angehaltenen oder laufenden Zustand starten. Wie auch immer Ich schweife ab.