{"id":1141,"date":"2011-07-22T12:43:41","date_gmt":"2011-07-22T10:43:41","guid":{"rendered":"http:\/\/linux.leunen.com\/?p=1141"},"modified":"2011-07-22T12:43:41","modified_gmt":"2011-07-22T10:43:41","slug":"debugger-un-script-python","status":"publish","type":"post","link":"https:\/\/www.leunen.com\/linux\/2011\/07\/debugger-un-script-python\/","title":{"rendered":"D\u00e9bugger un script python"},"content":{"rendered":"<p>Si comme moi, vous utilisez un simple \u00e9diteur de texte du genre geany pour \u00e9crire vos scripts et programmes en python, il y a des chances que vous fassiez comme moi et que vous utilisiez l&rsquo;instruction <em>print<\/em> pour d\u00e9bugger vos programmes. Ca fonctionne tr\u00e8s bien pour autant que le programme ne soit pas trop long et surtout que le bug ne soit pas trop vicieux. Il existe toujours la possibilit\u00e9 d&rsquo;utiliser un IDE du genre <em>Eric<\/em>, <em>pyCharm<\/em> ou encore <em>WingIDE<\/em> mais les meilleurs ne sont pas gratuits et je ne ressens pas l&rsquo;utilit\u00e9 d&rsquo;utiliser de tels programmes.<\/p>\n<p>Pourtant il y a moyen de d\u00e9bugger simplement son programme en utilisant <em>pdb<\/em>, le <em>Python Debugger<\/em>. Ceux qui ont d\u00e9j\u00e0 programm\u00e9 en C ou en C++ verront une ressemblance avec <em>gdb<\/em>.<br \/>\nDe fa\u00e7on basique, le d\u00e9bugger peut s&rsquo;appeler de deux mani\u00e8res.<br \/>\nLa premi\u00e8re consiste \u00e0 lancer le d\u00e9bugger puis \u00e0 tester le programme dans celui-ci:<\/p>\n<pre class=\"codesource\">\r\n$ python\r\nPython 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) \r\n[GCC 4.5.2] on linux2\r\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\r\n>>> import pdb\r\n>>> import mon_programme\r\n>>> mon_programme.main()\r\n<\/pre>\n<p>On importe le d\u00e9bugger ainsi que le programme que vous voulez tester sous forme de module. Ensuite on appelle la fonction que l&rsquo;on veut tester. Dans l&rsquo;exemple ici, je veux tester la fonction main() de mon programme.<\/p>\n<p>La seconde m\u00e9thode qui est celle que j&rsquo;utilise parce que je la trouve plus simple \u00e0 mettre en oeuvre, est d&rsquo;ins\u00e9rer la ligne suivante dans mon code l\u00e0 o\u00f9 je veux qu&rsquo;il s&rsquo;arr\u00eate (insertion d&rsquo;un breakpoint). \u00e0 ce moment, le prompt pdb s&rsquo;affiche et je n&rsquo;ai plus qu&rsquo;\u00e0 entrer les commandes du d\u00e9bugger que je veux utiliser. <\/p>\n<pre class=\"codesource\">\r\nimport pdb; pdb.set_trace();\r\n<\/pre>\n<p>Les commandes du d\u00e9bugger permettent d&rsquo;ex\u00e9cuter les lignes de code une \u00e0 une, d&rsquo;ex\u00e9cuter un ensemble de lignes, de mettre des breakpoints conditionnels ou non, d&rsquo;afficher le contenu d&rsquo;une variable et plein d&rsquo;autres choses. Je vous renvoie \u00e0 la documentation sur <em><a href=\"http:\/\/docs.python.org\/library\/pdb.html\">pdb<\/a><\/em> pour les d\u00e9tails sur les commandes disponibles dans le d\u00e9bugger et plus g\u00e9n\u00e9ralement sur le d\u00e9bugger lui-m\u00eame. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si comme moi, vous utilisez un simple \u00e9diteur de texte du genre geany pour \u00e9crire vos scripts et programmes en python, il y a des chances que vous fassiez comme moi et que vous utilisiez l&rsquo;instruction print pour d\u00e9bugger vos programmes. Ca fonctionne tr\u00e8s bien pour autant que le programme ne soit pas trop long [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[15],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/1141"}],"collection":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/comments?post=1141"}],"version-history":[{"count":2,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/1141\/revisions"}],"predecessor-version":[{"id":1143,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/1141\/revisions\/1143"}],"wp:attachment":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/media?parent=1141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/categories?post=1141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/tags?post=1141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}