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

Linux Discussion :

Obtenir call stack d'un programme java/C++ ?


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par défaut Obtenir call stack d'un programme java/C++ ?
    Bonjour,
    Je cherche à récuper la call stack (pile des appels) pour un programme écrit en java et utilisant des fonctions C++ (avec JNI). Savez vous comment je peux faire ? java possède une méthodge (printStackTrace dans la classe Exception) mais en C++ ? je peux éventuellement utiliser un debugger et déclencher une exception dans mon code C++ mais y'a t-il des debugger qui donne l'enchainement des fonctions (et non pas l'enchainement des sauts à des adresses mémoires) ?

    Merci

  2. #2
    Membre très actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Par défaut
    En c++ je ne sais pas mais su tu sais recuperer le pid process (genre avec pgrep ) tu peux faire un

    kill -3 <pid> 2>&1 /tmp/stack.trace

    ca va dumper la stack de ton programme java dans /tmp/stack.trace

    En c++ c'est tout de meme un pov appel systeme pour executer 2 process, aliors devrait pas y a voir de soucis.

    [edit]: et si ta vm fork sur +eurs process, prends le process pere ( pstree peut t'aider )

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Je remonte ce sujet ma fois fort intéressant. Sous Windows, il existe une bibliothèque complète fournie par Microsoft, dbghelp, mais sous Linux, je cherche encore après avoir chercher pendant 2 bonnes heures sur Google Quelqu'un a une idée ?
    Il existerait une fonction qui s'appelle dump_stack ou show_stack, mais elle nexiste pas sous FC5, certains sites proposent le header ucontext, mais ce n'est apparemment le cas de tous

    Même quelques fonction C permettant de dumper sur un FILE* serait appréciables !

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Je viens de trouver dans "execinfo.h" une fonction backtrace et backtrace_symbols qui font un minimum ce dont nous aurions besoin, je crois

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    La glib propose la fonction g_on_error_stack_trace basée sur gdb

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ce qui est intéressant, c'est d'afficher simplement la trace des appels, sans avoir gdb à côté, on ne sait pas si tout le monde en dispose.
    J'ai testén ça marche presque bien, ce qu'il manque encore, c'est afficher la liste des variables locales.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/01/2011, 13h13
  2. [Avis] Les meilleurs programmes Java ?
    Par christopheJ dans le forum ImageJ
    Réponses: 69
    Dernier message: 07/10/2008, 01h12
  3. [Apis]parser les arguments d'un programme Java
    Par sacofan dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 06/08/2005, 14h32
  4. [votre avis m'interesse] Interface avec un programme Java
    Par LineLe dans le forum Interfaces Graphiques en Java
    Réponses: 29
    Dernier message: 11/12/2004, 11h39
  5. Lancement d'un programme java depuis un script php
    Par gexti dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 07/05/2004, 17h40

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