Bonjour,
Quelqu'un connaitrait-il le moyen de récuperer le contenu d'une console après qu'elle est planté, simplement pour avoir une trace de l'origine de l'erreur?
raphchar
Bonjour,
Quelqu'un connaitrait-il le moyen de récuperer le contenu d'une console après qu'elle est planté, simplement pour avoir une trace de l'origine de l'erreur?
raphchar
après qu'elle ai plante ca risque d'être dur
Sous unix tu peux récupérer les signaux et donc logguer au moment ou tu reçois un sigsev ( ou autres )
sous windows http://stackoverflow.com/questions/1...nal-in-windows
cela dit le plus simple ca serait de logguer dans un fichier a la place de la console
Ps, plutôt que de logguer, tu a aussi la possibilité d'associer le débugger de visual studio a n'importe quel process ce qui peux aussi t'être utile
Mais le fichier sera-t-il bien enregistré si je crée un ifstream et que ca bug?
Utiliser le debugger: oui peut-être, mais je pensais plutôt ce principe pour un utilisateur qui n'ait pas VS (surtout pour une version Beta)
Ça sera plutôt un ofstream que tu créera
Ensuite si a la place d'écrire sur la console t'écris dans les logs, même si le programme plante, t'aura toujours les logs
Oui, mais ca ne répond pas à ma question (d'ailleurs c'est bien pour cela que j'ai créé la discution), est-ce qu'un ofstream va enregistrer le fichier si ca plante ?
Et comment fait-on un log? Est-ce un ofstream banal?
Si tu travailles sous Windows, peut être que cela peut t'intéresser : WinLog : une bibliothèque de génération de messages de trace. Et sinon, il y a peut être des idées dedans à reprendre
J'ai essayé, suivi l'exemple, impossible d'obtenir un fichier, seul un message s'affiche sur la log, pas dans un fichier
Fais tu appel à cette fonction : ofstream::flush() ?
De mémoire, c'est fait automatiquement à chaque saut de ligne si tu utilises endl au lieu de "\n".
J'utilise toujours endl.
Je n'appelle jamais cette fonction, mais il me semble aussi avoir lu que endl s'en chargait.
(desole par avance clavier qwerty...)
Personellement je n'utilise pas endl. Ma fonction de log est basee sur un simple std::fstream, et j'apelle flush pour chaque message envoye. Et ca marche tres bien!
Tout fonction bien avec endl(), le fichier est bien enregistré quand il y a eu une erreur.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager