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

Eclipse Java Discussion :

Voir contenu d'une variable Java d'un programme en cours d'exécution


Sujet :

Eclipse Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Points : 13
    Points
    13
    Par défaut Voir contenu d'une variable Java d'un programme en cours d'exécution
    Bonjour,

    J'ai supprimé par erreur un fichier d'export de mon application Java, lancée directement depuis Eclipse.

    L'application est toujours en cours d'exécution.

    Quelqu'un saurait-il m'indiquer un moyen de récupérer, d'une manière ou d'une autre, le contenu d'une variable HashMap, tant que l'application n'est pas quittée ?
    Que ce soit depuis Eclipse ou via le système (OS X…).

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ça dépend :
    1. si la HashMap n'a pas été encore été virée de la mémoire par le GC déjà, et que toutes les données qui s'y trouvaient également (que la map n'avait pas été vidée par exemple par un clear())
    2. la version de java, et si tu as jvisualvm (ou java mission control) sur ta machine
    3. ça va pas se faire tout seul : ça pourra être long et fastidieux
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Merci pour la réponse.


    1. Vu le fonctionnement du programme, tout devrait encore être en mémoire
    2. Pas de jvisualvm a priori, ça sent le roussi
    3. Fastidieux : cela n'aurait pas été grave, mais vu le point 2…


    J'imagine que jvisualvm (ou java mission control) ne peuvent pas être installés a posteriori ?

    Encore merci !

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Si. A part je ne sais plus, parce que ça vient avec le JDK. Mais sur OSX, si tu as un Java 6 d'installé, à priori, tu as JVisualVM. Si c'est du java 7/8, il aura fallu mettre juste l'OpenJDK (je ne sais même pas s'il y a la JRE à part sur Mac).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Ok, effectivement JVisualVM est installé. J'ose pas trop faire joujou avec de peur de diminuer mes chances de récupérer des choses. Tu aurais une piste sur ce que je peux faire avec JVisualVM ?

    Merci de ton aide.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    1. Tu lances jvisualvm.
    2. Comme c'est peut-être la première fois, on va te demander de le calibrer : tu réponds oui.
    3. A gauche, dans l'arbre, tu vas voir les différentes applications qui s'exécutent sur ton poste
    4. Puis, bouton droit sur ton application, puis "Heap dump" : puis tu ouvres l'onglet "Classes" :

    5. Nom : heapdump.PNG
Affichages : 192
Taille : 45,9 Ko
      Là, tu vois toutes les instances d'objet dans ta jvm à l'instant du dump : tu ouvres HashMap

    6. Nom : heapdump2.PNG
Affichages : 202
Taille : 27,9 Ko
      Là, tu vois toutes les instances de HashMap, que tu vas devoir analyser une par une (bon courage en passant)

    7. Nom : heapdump3.PNG
Affichages : 212
Taille : 41,7 Ko
      Pour chaque HashMap, il faudra aller dans sa variable table, pour chercher ses entrées, et regarder leur value et clef, afin de trouver celle qui t'intéresse
      Tu pourras retrouver les valeurs de tous tes éléments, et c'est là que commence la véritable partie fastidieuse : avec le menu Copy path from root, tu peux copier les valeurs, mais une par une, et les coller dans un fichier texte, que tu pourras ensuite parser tranquille, pour reconstituer tes données.


    Ta HashMap contient quels types de clef et valeur ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Là, tu vois toutes les instances de HashMap, que tu vas devoir analyser une par une (bon courage en passant)
    C'est bon, je vois tout ce dont j'ai besoin, excellent, je ne demandais pas mieux !

    Citation Envoyé par joel.drigo Voir le message
    Ta HashMap contient quels types de clef et valeur ?
    <String,String>
    Ça va être long, mais je l'ai bien mérité…

    Un énorme merci à toi joel.drigo, vraiment !

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Faut que les données soient vraiment sensibles pour les récupérer comme ça Je ne sais pas ce qui est faisable, je n'ai jamais regardé dans le détail, mais si les données sont très volumineuses, ça peut être intéressant de programmer un automate qui utilise le protocole de profilage.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Moins de 500 couples clef-valeur à récupérer qui représentent quelques heures de boulot de la part d'un expert dont le temps coûte cher, mon coût-horaire étant bien inférieur, le calcul est vite fait…

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

Discussions similaires

  1. Controler contenu d'une variable String Java
    Par Alucard95 dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2008, 00h34
  2. Imprimer/Visualiser le contenu d'une variable (VBS)
    Par Tartenpion dans le forum VBScript
    Réponses: 2
    Dernier message: 29/09/2005, 10h32
  3. Recuperer variable Javascript dans une variable Java
    Par drizztoli dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/09/2005, 14h58
  4. Réponses: 3
    Dernier message: 27/07/2005, 15h12
  5. Réponses: 11
    Dernier message: 22/06/2005, 11h04

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