SlideShare une entreprise Scribd logo
PYTHON	DEBUGGER
Python	Meetup	
Bordeaux	–	Node
2016-03-09	
Damien	Garaud	/	@jazzydag
Y'A	UN	BUG	?
SCÈNE	DE	CRIME
Suspicion
Où
Motifs	(raison)
Résoudre	(corriger)
QUAND
Lors	d'un	test...
ou	d'un	run
Du	code	à	vous...
ou	pas
Y'A	LE	BON,	ET	LE	MAUVAIS
Celui	qui	saute	aux	yeux,	vous	avez	une	exception
Celui	qui	ne	se	voit	pas,	mais	vous	savez	qu'y	a	un	blème
LES	EXCEPTIONS	SONT	VOS	AMIES
NameError,	SyntaxError	et	ImportError
TypeError,	ValueError,	IndexError,	KeyError
AttributeError,	IOError,	MemoryError
COMMENT	?
Le	1er	jour	vient	le	print()
Exceptions	ou	point	d'arrêt
Examiner	la	pile	d'appels
avec	un	IDE	ou	en	mode	"debug"
EXEMPLE
import	pandas	as	pd
def	main(fname):
				data	=	read_data(fname)
				result	=	data_processing(data)
				return	result
def	read_data(fname):
				data	=	pd.read_csv(fname)
				return	data
def	data_processing(data):
				return	data.query("age	<=	60")
if	__name__	==	'__main__':
				df	=	main("data.csv")
PILE	D'APPELS
																					+------------------+
																					|						main()						|
																					|																		|
																					+------------------+
																					+------------------+
																					|			read_data()				|
																					|																		|
																					+------------------+
																					+------------------+
																					|			processing()			|
																					|																		|
																					+------------------+
Comme	une	pile	en	faite
LANCER	PYTHON	EN	MODE	DEBUG
python	-m	pdb	script.py
/path/to/script.py
(Pdb)	type	command	here
	:	Python	debuggeurpdb
PRINCIPALES	COMMANDES
h(elp)
c(ontinue)
l(ist)
s(tep)
n(ext)
u(p)
a(rgs)
q(uit)
IPYTHON
	:	lance	pdb	dans	IPython
	:	commande	magique	IPython
ipdb
%pdb
POINT	D'ARRÊT
S'arrêter	où	l'on	souhaite
import	pdb;	pdb.set_trace()
import	ipdb;	ipdb.set_trace()
On	doit	modifier	le	code
POINT	D'ARRÊT
Dans	le	débuggeur
breakpoint
1.	 On	lance	python	-m	pdb
2.	 Imports	nécessaires
3.	 b	funcname
AVANT	L'EXÉCUTION
Outils	d'analyse
pylint
pyflakes
MAIS	ÇA	MARCHAIT	AVANT
La	semaine	dernière,	ça	marchait,	je
t'assure
Gestionnaire	de	version	à	la	rescousse
git	bisect	--help
UNE	CHOSE	À	RETENIR
Faites	des	tests	unitaires
MERCI	!

Contenu connexe

En vedette

Les langages de programmation sont trop compliqués
Les langages de programmation sont trop compliquésLes langages de programmation sont trop compliqués
Les langages de programmation sont trop compliqués
mercury_wood
 
Chouette! Encore un bug!
Chouette! Encore un bug!Chouette! Encore un bug!
Chouette! Encore un bug!
AgileCoach.net
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec python
Mohammed TAMALI
 

En vedette (20)

Les langages de programmation sont trop compliqués
Les langages de programmation sont trop compliquésLes langages de programmation sont trop compliqués
Les langages de programmation sont trop compliqués
 
Real Options - Agile France 2013
Real Options - Agile France 2013Real Options - Agile France 2013
Real Options - Agile France 2013
 
Chouette! Encore un bug!
Chouette! Encore un bug!Chouette! Encore un bug!
Chouette! Encore un bug!
 
Real Options Lean Kanban France 2013
Real Options Lean Kanban France 2013Real Options Lean Kanban France 2013
Real Options Lean Kanban France 2013
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
 
Modelisation agile 03122011
Modelisation agile  03122011Modelisation agile  03122011
Modelisation agile 03122011
 
Devoxx fr 2013 Real Options - Comment et Quand (ne pas) prendre des décisions
Devoxx fr 2013 Real Options - Comment et Quand (ne pas) prendre des décisionsDevoxx fr 2013 Real Options - Comment et Quand (ne pas) prendre des décisions
Devoxx fr 2013 Real Options - Comment et Quand (ne pas) prendre des décisions
 
Keynote agile grenoble 2013
Keynote agile grenoble 2013Keynote agile grenoble 2013
Keynote agile grenoble 2013
 
Real Options Agile Tour Brussels 2013
Real Options Agile Tour Brussels 2013Real Options Agile Tour Brussels 2013
Real Options Agile Tour Brussels 2013
 
Chp3 - Diagramme de Classes
Chp3 - Diagramme de ClassesChp3 - Diagramme de Classes
Chp3 - Diagramme de Classes
 
Agile 2010 Estimation Games
Agile 2010 Estimation  GamesAgile 2010 Estimation  Games
Agile 2010 Estimation Games
 
Agreeing on business value
Agreeing on business valueAgreeing on business value
Agreeing on business value
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec Odoo
 
Business value by systems thinking
Business value by systems thinkingBusiness value by systems thinking
Business value by systems thinking
 
Vous pouvez ignorerr les controleurs de gestion
Vous pouvez ignorerr les controleurs de gestionVous pouvez ignorerr les controleurs de gestion
Vous pouvez ignorerr les controleurs de gestion
 
UML+Python
UML+PythonUML+Python
UML+Python
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec python
 
Introduction à la POO - cours 1h
Introduction à la POO - cours 1hIntroduction à la POO - cours 1h
Introduction à la POO - cours 1h
 
Programmation orienté aspect
Programmation orienté aspectProgrammation orienté aspect
Programmation orienté aspect
 
Chouette! Encore un bug! Agile Tour 2012
Chouette! Encore un bug! Agile Tour 2012Chouette! Encore un bug! Agile Tour 2012
Chouette! Encore un bug! Agile Tour 2012
 

Similaire à Python debugger (6)

Rmll.securite
Rmll.securiteRmll.securite
Rmll.securite
 
Techdays 2010 : comment hacker PHP sans se fatiguer
Techdays 2010 : comment hacker PHP sans se fatiguerTechdays 2010 : comment hacker PHP sans se fatiguer
Techdays 2010 : comment hacker PHP sans se fatiguer
 
Coder propre !
Coder propre !Coder propre !
Coder propre !
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
 

Dernier

2024 03 27 JTC actualités C Perrot (idele).pdf
2024 03 27 JTC actualités C Perrot (idele).pdf2024 03 27 JTC actualités C Perrot (idele).pdf
2024 03 27 JTC actualités C Perrot (idele).pdf
idelewebmestre
 

Dernier (13)

01-La génétique s’adapte à la demande de la filière ovine
01-La génétique s’adapte à la demande de la filière ovine01-La génétique s’adapte à la demande de la filière ovine
01-La génétique s’adapte à la demande de la filière ovine
 
JTC 2024 - Approche collective de la santé
JTC 2024 - Approche collective de la santéJTC 2024 - Approche collective de la santé
JTC 2024 - Approche collective de la santé
 
04-La génomique, un outil pour la sélection des ovins
04-La génomique, un outil pour la sélection des ovins04-La génomique, un outil pour la sélection des ovins
04-La génomique, un outil pour la sélection des ovins
 
Provinlait 2024-Leviers fourrages - Madrid Aurélie Frayssinhes, Sandra (Cha...
Provinlait 2024-Leviers fourrages - Madrid  Aurélie  Frayssinhes, Sandra (Cha...Provinlait 2024-Leviers fourrages - Madrid  Aurélie  Frayssinhes, Sandra (Cha...
Provinlait 2024-Leviers fourrages - Madrid Aurélie Frayssinhes, Sandra (Cha...
 
03-La sélection pour la résistance au parasitisme
03-La sélection pour la résistance au parasitisme03-La sélection pour la résistance au parasitisme
03-La sélection pour la résistance au parasitisme
 
[2024] Comment scaler une application PHP vieille de plus de 20 ans ?
[2024] Comment scaler une application PHP vieille de plus de 20 ans ?[2024] Comment scaler une application PHP vieille de plus de 20 ans ?
[2024] Comment scaler une application PHP vieille de plus de 20 ans ?
 
05-La génétique, un levier majeur pour les enjeux à venir
05-La génétique, un levier majeur pour les enjeux à venir05-La génétique, un levier majeur pour les enjeux à venir
05-La génétique, un levier majeur pour les enjeux à venir
 
JTC 2024 - Actualités sur le bien-être animal
JTC 2024 - Actualités sur le bien-être animalJTC 2024 - Actualités sur le bien-être animal
JTC 2024 - Actualités sur le bien-être animal
 
JTC_2024_TC Bâtiment et bien-être estival.pdf
JTC_2024_TC Bâtiment et bien-être estival.pdfJTC_2024_TC Bâtiment et bien-être estival.pdf
JTC_2024_TC Bâtiment et bien-être estival.pdf
 
2024 03 27 JTC actualités C Perrot (idele).pdf
2024 03 27 JTC actualités C Perrot (idele).pdf2024 03 27 JTC actualités C Perrot (idele).pdf
2024 03 27 JTC actualités C Perrot (idele).pdf
 
02-Le bélier de sélection:investissement technique, économique,environnemental
02-Le bélier de sélection:investissement technique, économique,environnemental02-Le bélier de sélection:investissement technique, économique,environnemental
02-Le bélier de sélection:investissement technique, économique,environnemental
 
Présentation_Soirée-Information_ St-Eugène.pptx
Présentation_Soirée-Information_ St-Eugène.pptxPrésentation_Soirée-Information_ St-Eugène.pptx
Présentation_Soirée-Information_ St-Eugène.pptx
 
Pour une traite de qualité, mieux comprendre l’interface trayon-manchon
Pour une traite de qualité, mieux comprendre l’interface trayon-manchonPour une traite de qualité, mieux comprendre l’interface trayon-manchon
Pour une traite de qualité, mieux comprendre l’interface trayon-manchon
 

Python debugger