Debugging

38 views
Skip to first unread message

Mathieu Agopian

unread,
Jan 4, 2016, 3:51:54 AM1/4/16
to cloju...@googlegroups.com
Bonjour à toutes et à tous,

Je me suis amusé à résoudre les problèmes de http://adventofcode.com/
(presque fini : https://github.com/magopian/adventofcode). Disclaimer,
je suis grand débutant, et je suis loin de maîtriser les idiomes ;)

En écrivant le code pour trouver les solutions, j'ai très souvent dû
débugger le code, et voici les "outils" que j'ai utilisés :
- la macro "dbg": (defmacro dbg[x] `(let [x# ~x] (println "dbg:" '~x "="
x#) x#))
- les "assert" un peu de partout dans le code pour tester chaque petit
bout et être sûr que tout fonctionne comme prévu
- le plugin vim "fireplace" qui permet de se connecter à un REPL, et
d’interpréter des formes très facilement

Ces outils sont assez différents de ce que j'ai l'habitude d'utiliser en
python ou javascript, en particulier le debugger interactif.
Par exemple en python, si je vois un soucis, je vais mettre un "import
ipdb; ipdb.set_trace()" juste avant le soucis, ce qui va me permettre de
bloquer l'exécution à cet endroit, et de faire du "step by step".

J'ai vu qu'il existait au moins deux projets de debugger similaires pour
clojure, mais je n'y ai pas encore regardé de trop près. Est-ce que vous
avez des conseils dans ce domaine ? D'autres outils à recommander ?

Cordialement

Mathieu

laurent joigny

unread,
Jan 5, 2016, 4:51:59 AM1/5/16
to clojure-fr, mat...@agopian.info
Coucou Mathieu,

Si tu utilises vim et fireplace et que tu veux un mode debug, tu peux regarder du coté de vim-redl
Tu pourras utiliser les fonctions exposé par redl pour stopper le code à un point donné, remplacer des valeurs, etc.

Cdlt,

Laurent

Mathieu Agopian

unread,
Jan 5, 2016, 6:55:14 AM1/5/16
to laurent joigny, clojure-fr
Merci Laurent !

J'ai jeté un rapide coup d'œil à redl (et vim-redl), mais il ne permet
pas de "step" on dirait. Du coup, le seul avantage que j'y vois par
rapport à un bête "dbg" ou "prn" est de pouvoir retourner une valeur
différente ?

Ce qui a l'air beaucoup plus intéressant, par contre, et que j'ai
découvert par hasard en lisant la doc de vim-redl, c'est
https://github.com/dgrnbrg/spyscope. C'est une sorte de "dbg" ou "prn"
en surboosté, plus rapide/pratique à écrire, et qui a l'air vraiment
utile surtout pour le multi-thread.

Mathieu

Le 05/01/2016 10:51, laurent joigny a écrit :
> Coucou Mathieu,
>
> Si tu utilises vim et fireplace et que tu veux un mode debug, tu peux
> regarder du coté de vim-redl <https://github.com/dgrnbrg/vim-redl>
> Tu pourras utiliser les fonctions exposé par redl
> <https://github.com/dgrnbrg/redl> pour stopper le code à un point donné,
> remplacer des valeurs, etc.
>
> Cdlt,
>
> Laurent
>
>
> Le lundi 4 janvier 2016 09:51:54 UTC+1, Mathieu Agopian a écrit :
>
> Bonjour à toutes et à tous,
>
> Je me suis amusé à résoudre les problèmes de http://adventofcode.com/
> (presque fini : https://github.com/magopian/adventofcode
> <https://github.com/magopian/adventofcode>). Disclaimer,

jeremy schoffen

unread,
Jan 5, 2016, 9:15:40 AM1/5/16
to clojure-fr, laurent...@gmail.com, mat...@agopian.info
Salut Mathieu,

Si tu n'est pas contre l'idée de changer d'éditeur tu peux jeter un œil du coté de Cursive et de la vidéo de la Conj
où Colin Fleming présente les fonction de debugging.

Cheers,

Jeremy.

Mathieu Agopian

unread,
Jan 5, 2016, 12:32:19 PM1/5/16
to jeremy schoffen, clojure-fr, laurent...@gmail.com
Salut Jeremy,

effectivement, Cursive a l'air vraiment puissant, et correspond tout à
fait à ce que j'attends comme expérience de debugging. Je crois par
contre que je vais le réserver aux quelques cas où les outils que
j'utilise déjà ne suffisent plus : je suis très fan de mon vim, que
j'utilise pour les autres langages dont j'ai besoin pour mon travail ;)
Et le gros avantage de vim par rapport aux éditeurs comme intellij ou
eclipse, ce sont les raccourcis claviers, et leur très grande réactivité !

Merci beaucoup en tout cas pour les liens, très instructifs ;)

Mathieu

Le 05/01/2016 15:15, jeremy schoffen a écrit :
> Salut Mathieu,
>
> Si tu n'est pas contre l'idée de changer d'éditeur tu peux jeter un œil
> du coté de Cursive <https://cursive-ide.com/> et de la vidéo
> <https://www.youtube.com/watch?v=ql77RwhcCK0> de la Conj
> où Colin Fleming présente les fonction de debugging.
>
> Cheers,
>
> Jeremy.
>
>
>
> On Tuesday, January 5, 2016 at 12:55:14 PM UTC+1, Mathieu Agopian wrote:
>
> Merci Laurent !
>
> J'ai jeté un rapide coup d'œil à redl (et vim-redl), mais il ne permet
> pas de "step" on dirait. Du coup, le seul avantage que j'y vois par
> rapport à un bête "dbg" ou "prn" est de pouvoir retourner une valeur
> différente ?
>
> Ce qui a l'air beaucoup plus intéressant, par contre, et que j'ai
> découvert par hasard en lisant la doc de vim-redl, c'est
> https://github.com/dgrnbrg/spyscope
> <https://github.com/dgrnbrg/spyscope>. C'est une sorte de "dbg" ou

jeremy schoffen

unread,
Jan 5, 2016, 4:12:46 PM1/5/16
to clojure-fr, jschof...@gmail.com, laurent...@gmail.com, mat...@agopian.info
Pas de soucis, et je comprends qu'il est parfois difficile de se passer de son éditeur de choix.
A une époque on ne m'aurait pas fait lâcher emacs et j'étais loin d'être un utilisateur avancé.
Amuse toi bien avec clojure !

Cheers,
Jeremy.

Yann Esposito

unread,
Jan 6, 2016, 4:39:05 AM1/6/16
to clojure-fr, jschof...@gmail.com, laurent...@gmail.com, mat...@agopian.info
Salut Matthieu !

Je savais pas que tu t'intéressais à Clojure, c'est cool de se retrouver ici, le monde des geeks est petit.

Je bosse principalement en clojure et j'en ai aussi profité pour passer de vim à spacemacs. Franchement c'est vim on steroid, je ne regrette pas ma migration.
Pour en revenir à la question du debug, mon workflow clojure est en général d'écrire ma fonction puis de la retravailler dans un REPL et parfois en  utilisant des tests unitaires et/ou génératifs en même temps.
En général, après en développant comme ça il n'y a plus rien à debugger par la suite.
Même si la plupart du temps j'essaye d'utiliser les raccourcis proposés par l'éditeur (c'est flycheck plutôt que fireplace sous spacemacs), ouvrir une console avec un REPL et écrire

 (require '[mon.module :refer :all] :reload)

suffit dans 90% des cas.

Si tu veux aller plus loin par la suite, tu peux utiliser toute la batterie des outils proposés par la JVM comme le JMX, jConsole, visualVM, etc... Très efficace pour détecter les problèmes de fuite mémoire ou d'optim...

Mais vraiment utiliser des tests unitaires + génératifs aide vraiment beaucoup.

Mathieu Agopian

unread,
Jan 6, 2016, 5:12:22 AM1/6/16
to cloju...@googlegroups.com
Hello Yann,

effectivement, le monde est petit ;)

Je vais essayer spacemacs, j'en ai souvent entendu parler, on va voir
comment il rivalise avec neovim ;)

Pour le debug avec tests unitaires, comme je le disais dans mon premier
mail, c'est la méthode que j'utilise et qui fonctionne bien pour le moment.

Merci !


Mathieu
> --
> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes
> "clojure-fr".
> Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le
> concernant, envoyez un e-mail à l'adresse
> clojure-fr+...@googlegroups.com
> <mailto:clojure-fr+...@googlegroups.com>.
> Pour obtenir davantage d'options, consultez la page
> https://groups.google.com/d/optout.

jeremy schoffen

unread,
Jan 6, 2016, 7:12:43 AM1/6/16
to Yann Esposito, clojure-fr, laurent...@gmail.com, mat...@agopian.info
Woww je ne connaissais pas spacemacs, ça a l'air d'être un super projet.

Petite question pour Yann si je peux me permettre, dans quelles circonstance travailles tu avec Clojure ?
Je pose la question parce que je cherche un job et travailler avec clojure/clojurescript est un de mes objectifs...


Cheers,
Jeremy.
Cet e-mail a été envoyé depuis un ordinateur protégé par Avast.
www.avast.com

Yann Esposito

unread,
Jan 6, 2016, 9:58:38 AM1/6/16
to clojure-fr, yann.e...@gmail.com, laurent...@gmail.com, mat...@agopian.info
Bonjour Jeremy,

En fait je travaille chez Vigiglobe. Nous sommes, d'après mes connaissance, la première boite full Clojure (presque on fait un peu d'Haskell aussi) en France.
Nous sommes situé à Sophia Antipolis à coté de Nice.

Tu peux regarder ce qu'on fait sur cette video :


L'équipe tech est composée de 7 personnes.
On a commencé à utiliser Clojure alors que nous n'étions que deux dev.
Maintenant tout le monde l'utilise (à part le sysadmin).

Malheureusement, je ne pense pas que nous recrutions activement en ce moment.
Mais rien ne t'empêche de m'envoyer ton CV directement, je le ferai suivre. On ne sait jamais ;-).

Mais en tout cas, bosser en Clojure c'est top. Tout est plus joli, tout va plus vite qu'avec ce que j'utilisais avant.
Reply all
Reply to author
Forward
0 new messages