J'aimerais pouvoir afficher la pile d'appels courante lors d'une erreur :
fonction truc
appelée par fonction machine
...
J'utilise SBCL.
J'ai cru comprendre que lors d'une erreur je pouvais taper "source" dans
le débogueur et que ça m'aiderait, mais il m'affiche toujours :
#<SB-DI::BOGUS-DEBUG-FUN "bogus stack frame"> has no debug-block
information.
Avant que je tape "source", le débogueur m'affiche ("bogus stack frame").
J'ai aussi essayé d'ajouter une déclaration de ce type au début d'une
fonction, mais ça n'a pas l'air de changer grand chose :
(declare (optimize debug))
Au secours...
Sylvain
Essayer help
backtrace
Mettre:
(declaim (optimize (speed 0) (space 0) (debug 3) (safety 3)))
dans ~/.sbclrc
--
__Pascal Bourguignon__
Merci pour les infos :)
Par contre maintenant quand un programme plante SBCL ne lance plus le
debugger et affiche une pile d'appels puis
"file:///home/syl/programmes/lisp/reflux/reflux.lisp"
- Ca fait la même chose avec n'importe quel programme de 2 lignes
contenant une erreur
- Je n'ai rien indiqué dans ~/.sbclrc
- La ligne de lancement de SBCL : "sbcl --userinit <monprogramme.lisp>"
Est-ce que ça vous dit quelque chose ?
> Pascal J. Bourguignon a écrit :
> > Mettre:
>
> > (declaim (optimize (speed 0) (space 0) (debug 3) (safety 3)))
>
> > dans ~/.sbclrc
Ce n'est pas une bonne idée de mettre debug à 3 globalement. Il vaut
miex pour les débutants de garder les parametres de configuration aux
valeurs les plus souvent utilisé (voir testé).
> Merci pour les infos :)
>
> Par contre maintenant quand un programme plante SBCL ne lance plus le
> debugger et affiche une pile d'appels puis
> "file:///home/syl/programmes/lisp/reflux/reflux.lisp"
> - Ca fait la même chose avec n'importe quel programme de 2 lignes
> contenant une erreur
> - Je n'ai rien indiqué dans ~/.sbclrc
> - La ligne de lancement de SBCL : "sbcl --userinit <monprogramme.lisp>"
>
> Est-ce que ça vous dit quelque chose ?
N'utilisez pas --userinit pour lancer les programmes, cette option a
des effets particulier (voir le guide SBCL). Soit on utilise --load,
soit (et plus souvent) on lance les programmes directement depuis le
REPL.
Pourquoi ne pas augmenter le niveau du paramètre "debug" ?
> N'utilisez pas --userinit pour lancer les programmes, cette option a
> des effets particulier (voir le guide SBCL). Soit on utilise --load,
> soit (et plus souvent) on lance les programmes directement depuis le
> REPL.
Ok,je vais regarder le manuel :) .
Pour le lancement dans l'interpréteur directement, SBCL ce n'est pas
l'idéal... je n'arrive pas à naviguer dans l'historique par exemple
(avec la flèche du haut). Enfin bon, je vais essayer des modules pour
Eclipse, ça devrait être plus facile.
J'ai aussi essayé ABLE, mais je n'arrive pas à lui dire où se trouvent
les bibliothèques ASDF que j'ai récupérées, donc je ne peux pas faire
grand chose...
C'est normal, il n'y a pas d'historique.
Utiliser emacs, ou au moins rlwrap.
--
__Pascal Bourguignon__
C'est mieux avec rlwrap :)