Ouvrez le couvercle de la boîte rouge : débogueur Redis Lua

Ouvrez le couvercle de la boîte rouge : débogueur Redis Lua

rld art

Mise à jour: redis-lua-debugger n’est pas compatible avec Redis v3 et supérieur

Imaginez une boîte rouge. Vous mettez quelque chose dans la boîte et attendez que quelque chose d’autre sorte (ou pas). Tout ce qui sort (ou non) de la boîte dépend entièrement de ce que vous avez dit à la boîte que vous vouliez qu’elle fasse. La boîte provient de Terrah‘s moon donc il ne comprend que le langage lunaire, un langage à la fois étranger et en même temps similaire à celui auquel vous êtes déjà habitué. Pour qu’il fasse vos enchères, vous devez expliquer tout ce que vous voulez qu’il fasse dans les moindres détails, sinon la boîte ne fonctionnera pas du tout. Lorsque la boîte fonctionne, ce que vous obtenez en retour n’est pas toujours ce que vous pensiez obtenir. La boîte rouge a un sens de l’humour ironique et semble prospérer sur votre frustration croissante alors que vous essayez de jeter un coup d’œil à l’intérieur de son fonctionnement pour comprendre ce qui n’a pas fonctionné.

C’est ce que j’ai parfois ressenti en essayant d’écrire même les scripts Redis Lua les plus triviaux. Ce n’est pas que la boîte est cassée, pas du tout. Le problème est entièrement lié à mes compétences en programmation et à la tendance unique que j’ai à répandre des bogues partout. J’ai récemment écrit sur le 5 méthodes de traçage et de débogage des scripts Redis Lua, mais toutes ces méthodes (à l’exception de la dernière) nécessitent l’ajout et la suppression fastidieux d’impressions de débogage dans votre code. J’ai donc trouvé une meilleure façon de le faire et le résultat est notre débogueur Redis Lua (ou simplement “rld”), qui possède les fonctionnalités suivantes :

  • Un débogueur entièrement non interactif
  • Installation facile et native, seulement ~ 6 Ko de charge utile
  • Impression de sortie sur des consoles locales et distantes
  • Traçage d’exécution de la ligne de code
  • Mécanisme de montre automatique à la pointe de la technologie, qui signale les nouvelles variables et les changements de valeur
  • Signale les appels de fonction, les retours et les arguments – et effectue un profilage à la volée

La première chose à savoir sur le débogueur Redis Lua est qu’il est écrit en Lua et qu’il s’exécute dans Redis. Cela signifie que vous n’avez besoin de rien d’autre que du script et de Redis pour utiliser rld. Pour utiliser rld, vous devez d’abord le charger sur votre Redis en l’exécutant comme n’importe quel script normal – cela entraînera l’enfouissement de rld dans l’environnement Lua de votre Redis jusqu’au prochain redémarrage du serveur ou un appel à RINÇAGE DE SCRIPT.

rld peut utiliser à la fois le fichier journal de Redis et Pub/Sub (méthodes 1 et 4 dans le post mentionné ci-dessus, respectivement) pour sa sortie. Pour garder une trace, suivez simplement le fichier journal et/ou abonnez-vous au canal `rld`. Notez qu’après avoir chargé rld, il restera inactif jusqu’à ce qu’il soit explicitement activé par votre script Lua et restera actif tant que le script s’exécute ou jusqu’à ce que rld soit arrêté.

Donc, pour utiliser réellement rld pour déboguer votre script, vous devrez l’activer en appelant sa fonction `start` – ajoutez simplement la ligne suivante au début de votre script Lua :

Vous pouvez maintenant exécuter votre script. Il sera exécuté normalement (ou plutôt anormalement puisque nous parlons de débogage après tout), mais en même temps rld le suivra et affichera des informations sur son exécution. Lisez attentivement la sortie jusqu’à ce que vous soyez arrivé à ce moment Aha !/#facepalm.

Voici un exemple – considérez le script Lua suivant appelé prog.lua :

Maintenant, chargez rld (si vous ne l’avez pas déjà fait) et exécutez le script – puisque je passe 42 comme argument, je m’attends à ce que ce soit la bonne réponse :

Wow ! Attendre! Qu’est-ce qui vient juste de se passer? Facile, connectez-vous simplement à votre lok :

Pouvez-vous dire Halle-Lua? N’est-ce pas vraiment va-Lua-ble ? rld peut être téléchargé à partir de https://github.com/Redis/redis-lua-debugger. J’espère qu’il vous sera utile au moins autant que je me suis amusé à le faire. Bien sûr, il reste encore beaucoup à faire pour améliorer et étendre rld, mais je pense que c’est déjà un MVP, donc je le publie maintenant. Quant à prog.lua… eh bien, j’essaie toujours de me souvenir de ce que j’ai oublié afin de le réparer. Si vous repérez le bogue, veuillez appeler le numéro : 555-1234.

Des questions? Retour d’information? N’hésitez pas à m’envoyer un mail (itamar@redis.com) ou tweetez-moi (@itamarhaber) sur tout et n’importe quoi – je suis très disponible 🙂

Development Source

Related Posts

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Clés Redis dans la RAM |  Redis

Clés Redis dans la RAM | Redis

No Comment

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *