Bonjour à tous,
Je travaille sur une application embarquée et je m'intéresse à la gestion des erreurs. J'ai la chance de pouvoir travailler en C++ et non strictement en C.
L'idée est de pouvoir remonter jusqu'à l'origine d'un problème en production via des logs erreurs pour se concentrer sur cette origine sans devoir reproduire le cas exécutif que l'on a du mal à reproduire sur un environnement de développement où on a le "tout confort".
Il faut donc générer une espèce de stack trace comme on peut avoir en Java ou en PHP, mais avec les contraintes de performances quant au matériel utilisé qui peut être de l'Android sur des vieux téléphones, du Raspberry etc.
En gros, il faut savoir dire "Echec de création du contexte XXX parce que ci, parce que ça, parce que ci, parce que ça, parce que ci, parce que ça, parce que le malloc a échoué à cet endroit là parce que plus assez de mémoire", ou "fichier YYY introuvable".
Si ça consomme beaucoup de ressources quand il y a une erreur, c'est pas grave, mais il ne faut pas que ça pollue les performances lorsqu'il n'y en a pas, et il faut savoir que l'exécutif va dealer avec des données externes qui peuvent comporter des erreurs, l'un des but est de remonter l'erreur à l'entité qui l'a produite.
J'y vois deux manière de faire :
- Les codes retour de chaque fonction et plein de logs pour suivre le fil exécutif sur papier
- Via une stack d'exceptions à coups de macros __FILE__, __LINE__ et __FUNCTION__ où chaque exceptions entretiendra l'exception à l'origine de celle en court
Pour la première méthode, ça va consommer du disque et des performances même quand tout se passe on ne peut mieux, inenvisageable en production dans ce contexte là, sans compter le temps passé à analyser des logs de 30.000 lignes pour se concentrer sur la dizaine qui nous intéresse, d'autant plus que pour plus de visibilité il faut gérer du padding, décomposer les fichiers, les supprimer quand ils deviennent "trop anciens" etc. C'est pas tip top.
Pour la seconde, il y aura plein de try / catch partout mais ça c'est pas grave on saura quoi faire pour rendre les choses agréable, juste que j'ai entendu dire que la gestion des exceptions consommait des ressources de manière significative, mais est-ce vrai ou juste une idée reçue sans fondement ?
Merci à vous,
A bientôt
Partager