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