Afin de déboguer les composants internes de sbcl, j'ai essayé de suivre les paquets internes de sbcl.Le traçage du paquet sbcl interne provoque un débordement de la pile de contrôle
Par exemple, j'essayé
(trace "SB-IMPL")
Cela provoque un débordement de pile de contrôle. J'ai essayé de changer l'option de démarrage de la taille de la pile de contrôle lors du démarrage de SBCL, mais pas de changement.
Sinon, j'ai aussi essayé de modifier la fonction à l'aide: (uniquement snippet)
(setf (symbol-function s)
#'(lambda (&rest args)
;do something
;invoke original function
;do something more))
sous-do all-symboles seulement pour des symboles appartenant à des paquets spécifiés.
Encore j'obtiens l'erreur de débordement. Le code ci-dessus montre l'erreur de pile de liaison épuisée . Probablement quelqu'un peut expliquer comment contrôler la taille de la pile de liaison? Sinon, si quelqu'un peut indiquer comment modifier les définitions de fonctions SBCL internes pendant qu'elles sont compilées, cela peut aussi être génial? Je pourrais utiliser cette astuce pour recompiler SBCL de la source dans ce cas.
Merci Samuel. Oui, vous avez raison concernant la dépendance circulaire. La même chose m'a été signalée par sbcl-devel, bien que vous l'ayez expliqué avec des fonctions réelles. Oui, j'active la fonction show et j'imprime des informations utiles sur le fonctionnement interne. Mais je voulais aller tout le porc et quoi de mieux que de tracer un paquet entier. Je peux maintenant faire un peu de creusage et probablement à travers le code activer/désactiver la trace sur les fonctions de paquet interne valides. Merci encore. –