<?xml version="1.0" encoding="UTF-8"?>
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
          xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML"
          xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org"
          xml:lang="fr" xml:id="debug">
    <refnamediv>
        <refname>debug</refname>
        <refpurpose>Environnement de débogage dans Scilab</refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>Séquence d'appel</title>
        <synopsis>
            debug()
        </synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>Description</title>
        <para>
            Cet environnement sert à débogger un cript Scilab.
            Après l'appel à <literal>debug()</literal>, vous entrez en mode debogage.
            Ce mode vous permet de manipuler des points d'arrêts,
            de lancer des exécutions avec arrêt sur erreur,
            d'exécuter des scripts en mode pas à pas ...

            Dans la console, ce mode est indiqué par l'invite <literal>debug></literal>.
        </para>
        <term>Commandes: </term>
        <listitem>
            <variablelist>
                <varlistentry>
                    <term>h: </term>
                    <para>
                      Affiche l'aide du débogueur dans la console, quel que soit le mode de
                      lancement de Scilab.
                    </para>
                </varlistentry>
                <varlistentry>
                    <term>help: </term>
                    <para>
                      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").
                    </para>
                </varlistentry>
                <varlistentry>
                    <term>(q)uit: </term>
                    <para>Quitte l'environnement de débogage et revient au mode normal de Scilab.</para>
                </varlistentry>
                <varlistentry>
                    <term>(w)here ou bt: </term>
                    <para>Affiche la pile d'appel.</para>
                </varlistentry>
                <varlistentry>
                    <term>(e)xec, ou (r)un: </term>
                    <para>Exécute une commande.</para>
                </varlistentry>
                <varlistentry>
                    <term>(d)isp var, ou (p)rint var: </term>
                    <para>
                        Affiche la variable <literal>var</literal>.
                    </para>
                </varlistentry>
                <varlistentry>
                    <term>(c)ontinue: </term>
                    <para>Poursuit l'éxécution.</para>
                </varlistentry>
                <varlistentry>
                    <term>(a)bort: </term>
                    <para>Annule l'éxécution.</para>
                </varlistentry>
                <varlistentry>
                    <term>step(n)ext ou next: </term>
                    <para>Poursuit l'éxécution jusqu'a l'expression suivante.</para>
                </varlistentry>
                <varlistentry>
                    <term>step(i)n ou in: </term>
                    <para>Poursuit l'éxécution dans la sous fonction.</para>
                </varlistentry>
                <varlistentry>
                    <term>step(o)ut ou out: </term>
                    <para>Poursuit l'éxécution jusqu'à revenir dans la fonction appelante.</para>
                </varlistentry>
                <varlistentry>
                    <term>(b)reakpoint ou break: </term>
                    <synopsis>breakpoint function [line [condition]]</synopsis>
                    <para>
                        Ajoute un point d'arrêt dans une fonction, à la ligne <literal>line</literal>
                        indiquée.
                    </para>
                    <para>
                        Si une condition est spécifiée, le point d'arrêt devient actif uniquement si
                        la condition est vérifiée.
                    </para>
                </varlistentry>
                <varlistentry>
                    <term>(del)ete [n]: </term>
                    <para>Supprime tous les points d'arrêt.</para>
                    <para>Si n est spécifié, supprime le point d'arrêt #n</para>
                </varlistentry>
                <varlistentry>
                    <term>enable [n]: </term>
                    <para>Active tous les points d'arrêt.</para>
                    <para>Si n est spécifié, active le point d'arrêt #n</para>
                </varlistentry>
                <varlistentry>
                    <term>disable [n]: </term>
                    <para>Désactive tous les points d'arrêt.</para>
                    <para>Si n est spécifié, désactive le point d'arrêt #n</para>
                </varlistentry>
                <varlistentry>
                    <term>(s)how [n]: </term>
                    <para>Affiche toutes les informations sur les points d'arrêt.</para>
                    <para>Si n est spécifié, affiche les informations du point d'arrêt #n</para>
                </varlistentry>
            </variablelist>
        </listitem>
    </refsection>
    <refsection>
        <title>Exemples</title>
        <programlisting role="example"><![CDATA[
//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
 ]]></programlisting>
        <programlisting role="example"><![CDATA[
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
 ]]></programlisting>
    </refsection>

    <refsection>
        <title>Historique</title>
        <revhistory>
            <revision>
                <revnumber>6.0.0</revnumber>
                <revremark>Introduction du débogueur intégré, en interface console</revremark>
            </revision>
        </revhistory>
    </refsection>
</refentry>
