debug Lance le mode débogage de Scilab

## Séquence d'appel

                debug

## Description

`debug` met Scilab en mode débogage pour les fonctions écrites en langage Scilab. The prompt becomes `debug>` .

Ce mode permet de définir et gérer des points d'arrêt au sein des fonctions, d'exécuter des fonctions pas à pas, de lancer des exécutions avec arrêt sur erreur, etc.

### Commandes en mode débogage

h:
Affiche l'aide du débogueur dans la console, quel que soit le mode de lancement de Scilab.

help:
En mode Scilab standard (avec fenêtres et interfaces graphiques), ouvre le navigateur d'aide. Sinon affiche l'aide du debogueur dans la console (comme avec "h").

(q)uit:
Quitte l'environnement de débogage et revient au mode normal de Scilab.

(w)here ou bt:
Affiche la pile d'appel.

(e)xec, ou (r)un:
Exécute une commande.

(d)isp var, ou (p)rint var:
Affiche la variable `var`.

(c)ontinue:
Poursuit l'éxécution.

(a)bort:
Annule l'éxécution.

step(n)ext ou next:
Poursuit l'éxécution jusqu'a l'expression suivante.

step(i)n ou in:
Poursuit l'éxécution dans la sous fonction.

step(o)ut ou out:
Poursuit l'éxécution jusqu'à revenir dans la fonction appelante.

(b)reakpoint ou break:
`breakpoint function [line [condition]]` : Ajoute un point d'arrêt dans une fonction, à la ligne `line` indiquée. Si une condition est spécifiée, le point d'arrêt devient actif uniquement si la condition est vérifiée lors de l'éxécution.

(del)ete [n]:
Supprime tous les points d'arrêt. Si n est spécifié, supprime le point d'arrêt #n

enable [n]:
Active tous les points d'arrêt. Si n est spécifié, active le point d'arrêt #n.

disable [n]:
Désactive tous les points d'arrêt. Si n est spécifié, désactive le point d'arrêt #n.

(s)how [n]:
Affiche toutes les informations sur les points d'arrêt. Si n est spécifié, affiche les informations du point d'arrêt #n.

### Déboguer un script

Déboguer une série d'instructions résidant hors de toute fonction requiert de les encapsuler dans une fonction factice. Exemple: nous souhaitons déboguer les instructions suivantes :

                    a = 1;
                    b = linspace(a, 3, 10);
                    c = exp(a + %i + c);

Nous devons préalablement les inscrire dans une fonction quelconque :

                    function script()
                        a = 1;
                        b = linspace(a, 3, 10);
                        c = exp(a + %i + c);
                    endfunction

puis exécuter ce bloc function/endfunction (en mode Scilab normal) afin de définir script() dans la session Scilab. Toutes les commandes du débogueur peuvent alors être utilisée au sein de script() : points d'arrêt, avance pas à pas, etc.

## Exemples

    //fonction de surcharge de la fonction cosinus pour les chaînes de caractères
    function v = %c_cos(val)
        printf("val : %s\n", val);
        v = cos(evstr(val));
    endfunction

    //appelant
    function a = test_debug()
        b = cos("%pi");
        a = b * 3;
    endfunction

    debug
    break test_debug
    exec test_debug
    where
    stepin
    disp val
    continue
    quit

    function v = compute(val)
        v = 1;
        for i=1:val
            v = v * i;
        end
    endfunction

    debug
    break compute 4 "i == 5"
    exec compute(10)
    disp val
    disp i
    disp v
    continue
    quit

## Historique

6.0.0 Introduction du débogueur intégré, en interface console