IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI et Outils pour Java Discussion :

[jdb] Outil de debuggage sous unix


Sujet :

EDI et Outils pour Java

  1. #1
    Membre habitué Avatar de relivio
    Profil pro
    Inscrit en
    Février 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 157
    Points : 177
    Points
    177
    Par défaut [jdb] Outil de debuggage sous unix
    Bonjour,

    Je souhaite avoir des indications pour debugger via l'utilitaire jdb. Je suis sur une machine AIX avec une version java 1.4.

    Alors dans un premier temps, j'ai compilé mes sources avec toutes les options de debug.
    java -g *.java

    Et ensuite je lance mon debuggeur.
    jdb MaClasse

    Mon soucis, est que je n'arrive à presque rien faire, enfin pas ce que je souhaite. En fait tout se lance correctement, mais quand j'essaie de lancer une commande du debuggeur, il me dit qu'il ne peut rien faire tant que le VM n'est pas démarré.
    Alors j'ai fait des recherches pour lancer une JVM, sans trop de succès, j'ai lancé la commande "javaws".

    Alors mon message d'erreur que j'essaie de mettre un point d'arrêt ou de charger la classe dans le debuggeur, j'ai ce message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Initializing jdb ...
    > stop in JasperGenereRapport.main
    Deferring breakpoint JasperGenereRapport.main.
    It will be set after the class is loaded.
    > classes
    Command 'classes' is not valid until the VM is started with the 'run' command
    > load JasperGenereRapport
    Command 'load' is not valid until the VM is started with the 'run' command
    Alors ceci est assez empirique, mais je n'ai pas d'autres moyens.

    Merci d'avance,
    Oliv'.

  2. #2
    Membre habitué Avatar de relivio
    Profil pro
    Inscrit en
    Février 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 157
    Points : 177
    Points
    177
    Par défaut
    Bonjour,

    Alors j'ai avancé depuis la dernière fois. Mais c'est vraiment bien galère.

    Quand je lance le jdb, j'utilise l'option "launch" ce qui a pour effet de me lancer une JVM en même temps.
    Par contre j'ai utilisé la commande pour positionner un point d'arrêt, mais comme j'ai l'impression qu'il me met un message d'erreur, je me dis qu'il n'est pas positionné (mais peut-être car par la suite, j'ai l'impression qu'il le prend en compte) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    stop in test.main
    Deferring breakpoint test.main.
    It will be set after the class is loaded.
    Ensuite, j'utilise la commande "step up" pour arriver au code de ma classe. En effet, il passe par des classes internes de lancement, je pense.
    Et enfin, j'arrive à cette instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Step completed: "thread=main", java.net.URLClassLoader$ClassFinder.run(),
    Ensuite un dernier "step up", et j'arrive, par miracle, au main de ma classe.
    alors je me suis dit mince, je n'ai pas encore de point d'arrêt, il ne l'a pas fait, mais peut-être que oui. car au final j'obtiens le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    step up
    > Set deferred breakpoint test.main
     
    Step completed:
    Breakpoint hit: "thread=main", test.main(), line=5 bci=0
    5               int i = (int) 2.9999 * (int) 4.9999;
    Mais peut-être qu'il s'arrete bien gentilment grâce au "step up". Enfin, c'est vraiment louche.

    Mais au final, je peux utiliser des commandes comme "list" pour afficher le code de ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    main[1] list
    1    import java.lang.*;
    2
    3    public class test{
    4       public static void main(String[] argv) {
    5 =>            int i = (int) 2.9999 * (int) 4.9999;
    6
    7               System.out.println("la valeur est : " + i);
    8
    9       }
    10
    Voilà, j'espère que cela aidera quelqu'un un jour. Par contre je reste sceptique sur l'utilisation, je suis presque sûr qu'il y a un moyen plus facile. Donc si quelqu'un a des remarques.

    Oliv'.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/03/2010, 14h47
  2. [Kylix] Kylix sous UNIX
    Par gRRosminet dans le forum EDI
    Réponses: 3
    Dernier message: 09/11/2004, 17h07
  3. Montage sur Debian de AFPS sous UNIX
    Par Harbaingan dans le forum Administration système
    Réponses: 2
    Dernier message: 14/01/2004, 22h03
  4. Chargement dynamique de DLL sous Unix
    Par Willou dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/12/2002, 18h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo