Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Debugger

5 réponses
Avatar
MyDomDom
Bonjour,

Je voudrais apprendre =E0 utiliser un debugger. J'en ai marre de faire
des print... ;-)

Lequel me conseillez-vous (facile =E0 utiliser) ?
Y-a-t-il un bon tuto en fran=E7ais (sinon en anglais) ?

Merci d'avance
Dominique

5 réponses

Avatar
Christophe
a écrit :
Bonjour,

Je voudrais apprendre à utiliser un debugger. J'en ai marre de faire
des print... ;-)

Lequel me conseillez-vous (facile à utiliser) ?
Y-a-t-il un bon tuto en français (sinon en anglais) ?

Merci d'avance
Dominique



Try PyDev with Eclipse. Ok, it's not lightweight but the debugger is good.
Avatar
William Dode
On 22-07-2008, wrote:
Bonjour,

Je voudrais apprendre à utiliser un debugger. J'en ai marre de faire
des print... ;-)



Ca dépend un peu du programme... Déjà au lieu des prints tu peux
utiliser le module logging

Pour les applis web par ex, j'utilise evalexception (de paste) qui
permet de lancer un interpréteur sur la page web qui plante.

--
William Dodé - http://flibuste.net
Informaticien indépendant
Avatar
MyDomDom
Bonjour et merci des réponses.

Pour les applis, c'est du gui wxpython essentiellement.
Je suis en train de découvrir pdb.

Merci
Dominique
Avatar
utopia
a écrit :
Bonjour,
J'en ai marre de faire des print... ;-)



-------------------------------------
source :
Comment ca marche . fr
http://www.commentcamarche.net/forum/affich-1245586-python-module-logging
------------------------------------
Quand vous avez une appli avec beaucoup de classes ou de threads, il
est parfois difficile de voir ce qui se passe.
Avec les threads, ça peut même tourner au cauchemard.

Le module logging permet d'avoir une hiérarchie de logs dans votre
application.

exemple:
monappli
monappli.database
monappli.database.updateUsers
monappli.mail
etc.

Ces logs sont accessible de n'importe où dans l'application.
Chacune de vos classes/threads peut loguer dans un de ces logs
(très simple:
log = logger.getLogger('monappli.database') et puis
log.info('coucou'), ou log.error('oups !')).

Il y a plusieurs niveaux de criticité pour chaque message (debug,
info, warning,error, exception, critical...)
Le module loggin enregistre tous ces messages.

Ensuite on peut se 'brancher' sur n'importe lequel de ces logs pour
écouter les messages.

Par exemple, on peut se brancher sur 'monappli' pour voir les logs
générés dans toute l'application.
Ou bien se brancher uniquement sur 'monappli.database' pour ne voir
que ce qui concerne la base de données.

On peut choisir le niveau de vue: ne voir que les criticals, les
warning ou jusqu'au détail (debug).
Et ça peut se changer dynamiquement: ça veut dire qu'on peut très bie n
aller sur une application en production et passer en mode 'debug' pour
voir ce qui se passe sans interrompre l'application.
(Ils ont même prévu un socket serveur pour demander en live à l'appli
de changer sa configuration de log !)

C'est absolument génial pour débuguer un problème en prod !

Le plus fort, c'est que quand on se branche sur un log, on peut
pluguer un handler qui va automatiquement faire des actions:
- afficher à l'écran
- écrire dans un fichier
- écrire dans un fichier (avec log rotatif automatique)
- envoyer à un syslog
- écrire dans l'eventlog de Windows
- envoyer sur un socket
- envoyer une trame UDP
- envoyer une requête HTTP
- envoyer un mail (SMTP)

En plus des niveaux de criticité, ils ont même prévu un système de
filtres pour ne récupérer que les évènements qui vous intéressent .
On peut même définir ses propres niveaux de criticité.

Et évidemment ce module est totalement thread-safe.
Avatar
NicolasP
utopia a écrit :
a écrit :
Bonjour,
J'en ai marre de faire des print... ;-)



-------------------------------------
source :
Comment ca marche . fr
http://www.commentcamarche.net/forum/affich-1245586-python-module-logging
------------------------------------
Quand vous avez une appli avec beaucoup de classes ou de threads, il
est parfois difficile de voir ce qui se passe.
Avec les threads, ça peut même tourner au cauchemard.

Le module logging permet d'avoir une hiérarchie de logs dans votre
application.

exemple:
monappli
monappli.database
monappli.database.updateUsers
monappli.mail
etc.

Ces logs sont accessible de n'importe où dans l'application.
Chacune de vos classes/threads peut loguer dans un de ces logs
(très simple:
log = logger.getLogger('monappli.database') et puis
log.info('coucou'), ou log.error('oups !')).

Il y a plusieurs niveaux de criticité pour chaque message (debug,
info, warning,error, exception, critical...)
Le module loggin enregistre tous ces messages.

Ensuite on peut se 'brancher' sur n'importe lequel de ces logs pour
écouter les messages.

Par exemple, on peut se brancher sur 'monappli' pour voir les logs
générés dans toute l'application.
Ou bien se brancher uniquement sur 'monappli.database' pour ne voir
que ce qui concerne la base de données.

On peut choisir le niveau de vue: ne voir que les criticals, les
warning ou jusqu'au détail (debug).
Et ça peut se changer dynamiquement: ça veut dire qu'on peut très bien
aller sur une application en production et passer en mode 'debug' pour
voir ce qui se passe sans interrompre l'application.
(Ils ont même prévu un socket serveur pour demander en live à l'appli
de changer sa configuration de log !)

C'est absolument génial pour débuguer un problème en prod !

Le plus fort, c'est que quand on se branche sur un log, on peut
pluguer un handler qui va automatiquement faire des actions:
- afficher à l'écran
- écrire dans un fichier
- écrire dans un fichier (avec log rotatif automatique)
- envoyer à un syslog
- écrire dans l'eventlog de Windows
- envoyer sur un socket
- envoyer une trame UDP
- envoyer une requête HTTP
- envoyer un mail (SMTP)

En plus des niveaux de criticité, ils ont même prévu un système de
filtres pour ne récupérer que les évènements qui vous intéressent.
On peut même définir ses propres niveaux de criticité.

Et évidemment ce module est totalement thread-safe.



Et comment on fait pour se "brancher" ?