• Aucun résultat trouvé

Pour utiliser la JVM en mode debugage distant il faut lui paramètrer le port d'attente.

N/A
N/A
Protected

Academic year: 2022

Partager "Pour utiliser la JVM en mode debugage distant il faut lui paramètrer le port d'attente."

Copied!
6
0
0

Texte intégral

(1)

1.

2.

Deboguage

Debuggueur minimal

Il faut activer :

-Xdebug -Xrunjdwp:transport=dt_socket,address=5555,server=y,suspend=n Puis on peut utiliser la commande jdb :

jdb -attach localhost:5555

# puis qque chose du genre

stop in org.esupportail.portal.services.ProlongationENT.doGet ou mieux, installer rlwrap pour avoir un support “readline” (historique) puis faire : rlwrap jdb -attach localhost:5555

Debugger un test maven

mvn -Dmaven.surefire.debug test les tests attende qu'un débuggeur se connecte

NB : il peut être très utile de fournir les xxx-sources.jar via mvn dependency:sources

Debugage distant eclipse

L'utilisation du debugage distant permet d'avoir un Tomcat sur un serveur et de faire du debugage (pas à pas) sur le poste local (poste du développeur).

Le principe du debugage distant est le suivant :

La JVM server ouvre sur socket (sur le server et un port spécifique)

Eclipse va se connecter sur cette socket afin d'intercepter les point d'arrêt et de communiquer avec la JVM distante.

Pour utiliser la JVM en mode debugage distant il faut lui paramètrer le port d'attente.

Pour ce faire plusieurs solutions (en voici 2) : on utilise un script sh afin de lancer le Tomcat.

#!/bin/sh

JAVA_HOME=/usr/java/j2sdk1.4;export JAVA_HOME JAVA_OPTS="-server ";export JAVA_OPTS

# si debug : mettre MY_DEBUG a 1, et preciser le port avec JPDA_ADDRESS MY_DEBUG=1

JPDA_ADDRESS=55555;export JPDA_ADDRESS

CATALINA_HOME=/home/cri/jmarchal/uPortal/Tomcat;export CATALINA_HOME CATALINA_BASE=$CATALINA_HOME;export CATALINA_BASE

if [ "$MY_DEBUG" = "1" ]; then

$CATALINA_HOME/bin/catalina.sh jpda start else

$CATALINA_HOME/bin/catalina.sh start fi

Tomcat utilise des variables d'environement afin de choisir le port d'attente de la socket de debug (JPDA_ADDRESS).

dans la deuxième solution, on positionne l'ensemble des options Java supplémentaires en définissant uniquement la variable JAVA_OPTS Sous un UNIX:

Sous Linux, il n'y a pas de “Shared Memory Attaching Connector”. Donc pour se connecter à un dt_shmem, il faut passer par un “Process Attaching Connector”. Exemple : jdb -connect com.sun.jdi.ProcessAttach:pid=1358. Conclusion : il est bien plus simple d'utiliser d

!!

t_socket

(2)

JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=55555,server=y,suspend=n"

Sous un Windows :

rem set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=55555,server=y,suspend=y %JAVA_OPTS%

Remarquez ici l'option suspend : positionnée à y elle permet de faire temporiser le démarrage du Tomcat, celui-ci ne démarrant que si la communication socket est activée. Cela permet notamment de débuguer l'initialisation des applications, ce qui peut s'avérer bien pratique.

La seconde partie de cette manipulation va se faire du coté Eclipse.

Avant toutes chose il faut afficher la perspective debugage Fenêtre -> Ouvrir la perspective -> Autre:

Choisir Debogage :

Votre afficahge va changer comme suit :

(3)

Ensuite il faut créer un profil de debugage :

Chosissez Application Java distante puis cliquer sur Nouveau.

(4)

Donner un nom à cette configuration.

Choisissez le projet auquelle la configuration doit faire référence.

Valuez le nom du serveur distant (Hôte) et le port qui doit être le même que le JPDA_ADDRESS (cf script de lancement au dessus)

Cliquer sur Déboguer.

(5)

Par la suite vous pouvez appliquer despoint d'arrêt en cliquant (bouton droit) sur la ligne grise à gauche de votre source.

Utiliser un navigateur classique pour allez voir votre uPortal. Si vous passer sur le code où vous avez mis un point d'arrêt Eclispe s'activera (attention eclipse ne passe pas au permier plan il clignote dans votre barre des tâche)

Vous avez ainsi la vision des variables en cours d'exécution (et aussi de chaque Thread de votre JVM intéressant)

La touche lancement (>) en haut à gauche de la vue débugoge vous permet de continuer.

Par la suite vous pouvez lancer le debugage via la barre supérieur :

Debugguer avec emacs

Sinon on peut utiliser la commande jdb de emacs. Voici un script qui aide bien pour démarrer jdb :

(6)

/usr/local/bin/jdb-emacs

#!/bin/sh

attach=$1 sourcepath=$2

initial_breakpoint=$3

usage() {

echo "usage example: jdbc-emacs localhost:5555 src/main/java org.esupportail.portal.services.

ProlongationENT.doGet"

exit 1 }

[ $# = 3 -o $# = 2 ] || usage

[ -d "$sourcepath" ] || { echo "$sourcepath does not exist"; usage; }

cmd="(jdb \"jdb -attach $attach -sourcepath$sourcepath\")"

if [ -n "$initial_breakpoint" ]; then

cmd2="(gud-call \"stop in $initial_breakpoint\")"

cmd="(progn $cmd $cmd2)"

fi

exec emacs --eval "$cmd"

Références

Documents relatifs

Si vous êtes en Windows 95/98, il faut donc avoir un logiciel de compression/décompression sur votre PC : Winzip, WinRar, Zip Central, etc... On peut en outre, pour plus de

1) D'abord, les TICE libèrent des contraintes de calcul (souvent très pénibles en statistique) et permettent de nombreux types d'illustrations. Cela permet de privilégier le

Vous trouverez de plus amples détails sur le script suivant dans le forum du cours à l'entrée Explications sur le script du graphique de la moyenne et des barres d'erreur.

Par contre, l'évaluation se fait toujours à partir des bulletins de 1ère, des deux premiers trimestres de terminale et des résultats des épreuves anticipées (et d'une lettre de

Le seul ca où il est impossible d'utiliser --skip-locking est lorsque vous avez plusieurs SERVEUR MySQL (pas les clients) avec les mêmes données (ou bien exécutez isamchk sur

Le but de ce cours est d'aborder les notions de sécurité des langages de programmation, et plus particulièrement les mécanismes fournis dans l'environnement Java?. Les grandes

Deux numéros verts, deux plateformes d’écoute. ÉLÈVES, PARENTS, PROFESSIONNELS, APPELEZ

Contraintes normale et tangentielle Conditions aux limites en pression Théorème de l’action et de la réactionF. Contraintes dans un repère orthonormé Tenseur