Timer et dbstop

Les timers peuvent s’avérer très pratique pour exécuter à l’infini un programme.
Maintenant il faut avouer que ce n’est pas simple au premier abord à comprendre le fonctionnement , pour preuve ce graphique :

timer_execution_multi

En R2011b , les exemples ne sont légion mais en revanche en R2013b , il y a un exemple sympatique permettant de bien comprendre le système: http://www.mathworks.com/help/matlab/ref/timerclass.html
(Chapitre timer class -> chapitre Define Custom Callback Functions)

Les .m donnés en exemple avec createErgoTimer permettent de créer un timer qui tourne pendant 8 heures pour vous rappeller toutes les 10 minutes de prendre une pause de 30 secondes ;)

Bref l’information que je voulais vous partager est l’inconvénient majeur des timers est son mode debug: en effet
le point noir des timers est pour débugguer une erreur . En effet seul un dbstop if caught error vous dira exactement quelle ligne pour quel M-file il y a eu une erreur. Maintenant il suffit que dans votre code vous fassiez des try-catch , le dbstop if caught error vous arrêtera au premier try qui échoue (même si vous faites un catch derrière) . Donc ce n’est pas acceptable.
J’ai contacté le support technique à ce sujet , il n’y a pas de solution ! Malheureusement le simple dbstop if error n’a aucun effet sur les timers …

Suivant l’erreur retournée et le volume du code , cela peut être très fastidieux au développeur de jouer au détective pour trouver où le timer a pu échouer surtout quand on a l’habitude d’utiliser le débogueur MATLAB. Je suis vraiment très étonné que dbstop n’a pas un mode spécial pour les timers autre que le « if caught error ». Enfin bon j’ai remonté l’info et j’espère que la R2014a aura cette fonctionnalité.

Laisser un commentaire