Leçon 4 : débugger du code Matlab

Quelques astuces

  • Dans les versions de Matlab, on peut utiliser la touche TAB pour compléter un mot dans la fenêtre de commande. C'est assez utile lorsqu'on a oublié le nom exact d'une fonction.
  • Si on ne se souvient plus des arguments d'une fonction, ou de son utilité, la fonction help est là. Ainsi,
    >> help find
     FIND   Find indices of nonzero elements.
        I = FIND(X) returns the linear indices corresponding to 
        the nonzero entries of the array X.  X may be a logical expression. 
        Use IND2SUB(SIZE(X),I) to calculate multiple subscripts from 
        the linear indices I.
      
        I = FIND(X,K) returns at most the first K indices corresponding to 
        the nonzero entries of the array X.  K must be a positive integer, 
        but can be of any numeric type....
    
  • Les touches fléchées verticalement permettent de revenir à d'anciennes commandes. Si vous avez déjà commencé à taper quelques caractères, vous ne parcourrez que les commandes commençant par ces caractères.
  • Quelques commandes en vrac bien utiles (utilisez help pour connaître leur signification): fliplr,

Comment débugger ?

La première approche consiste à mettre des points d'arrêts dans le code 1). Matlab va s'arrêter lorsqu'il va tenter d'exécuter le code présent sur ces lignes. Pendant cette “pause”, vous pouvez exécuter des commandes à partir de la fenêtre de commande, vous pouvez afficher la valeur des variables et même les modifier.

A travers le menu debug, vous avez 4 moyens d'avancer dans le code:

  • Step: Effectue les lignes les unes après les autres
  • Step In: Comme Step mais débugge également les fonctions utilisées
  • Step Out: Permet de sortir d'une sous-fonction tout en continuant à débugger. Utile lorsqu'on a utilisé à tort Step In
  • Continue: Continue le code sans débuggage jusqu'à la fin ou jusqu'au prochain point d'arrêt.

Cette méthode est très utile et très utilisée. Cependant, il y a une seconde méthode peu utilisée, mais qui peut se révéler très pratique. Elle consiste à définir le comportement de Matlab en cas d'erreur, de warning ou autre. Cela se définit dans le menu DebugStop if Error/Warning.

Par exemple, en cliquant sur Always stop if errors dans l'onglet Error, Matlab va se mettre en “pause” dès qu'il va rencontrer une erreur: cela va vous permettre de voir l'état des différentes variables juste avant l'arme l'erreur fatale.

Exercice

Je pense que vous aurez suffisamment d'occasions pour vous exercer tout seul ;-)

Bonne continuation avec Matlab !

1) pour définir ces points d'arrêts, il suffit de cliquer dans la marge à gauche de la ligne sur laquelle on veut s'arrêter
matlab/04debug.txt · Dernière modification: 2009/08/03 20:25 (édition externe)
Recent changes RSS feed Creative Commons License Donate Driven by DokuWiki