SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
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	!

Mais conteúdo relacionado

Destaque

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ésmercury_wood
 
Real Options - Agile France 2013
Real Options - Agile France 2013Real Options - Agile France 2013
Real Options - Agile France 2013AgileCoach.net
 
Chouette! Encore un bug!
Chouette! Encore un bug!Chouette! Encore un bug!
Chouette! Encore un bug!AgileCoach.net
 
Real Options Lean Kanban France 2013
Real Options Lean Kanban France 2013Real Options Lean Kanban France 2013
Real Options Lean Kanban France 2013AgileCoach.net
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Pythonyboussard
 
Modelisation agile 03122011
Modelisation agile  03122011Modelisation agile  03122011
Modelisation agile 03122011agnes_crepet
 
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écisionsAgileCoach.net
 
Keynote agile grenoble 2013
Keynote agile grenoble 2013Keynote agile grenoble 2013
Keynote agile grenoble 2013AgileCoach.net
 
Real Options Agile Tour Brussels 2013
Real Options Agile Tour Brussels 2013Real Options Agile Tour Brussels 2013
Real Options Agile Tour Brussels 2013AgileCoach.net
 
Chp3 - Diagramme de Classes
Chp3 - Diagramme de ClassesChp3 - Diagramme de Classes
Chp3 - Diagramme de ClassesLilia Sfaxi
 
Agile 2010 Estimation Games
Agile 2010 Estimation  GamesAgile 2010 Estimation  Games
Agile 2010 Estimation GamesAgileCoach.net
 
Agreeing on business value
Agreeing on business valueAgreeing on business value
Agreeing on business valueAgileCoach.net
 
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 OdooHassan WAHSISS
 
Business value by systems thinking
Business value by systems thinkingBusiness value by systems thinking
Business value by systems thinkingAgileCoach.net
 
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 gestionAgileCoach.net
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonMohammed TAMALI
 
Introduction à la POO - cours 1h
Introduction à la POO - cours 1hIntroduction à la POO - cours 1h
Introduction à la POO - cours 1hJohann Dreo
 
Programmation orienté aspect
Programmation orienté aspectProgrammation orienté aspect
Programmation orienté aspectmeriem sari
 
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 2012AgileCoach.net
 

Destaque (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
 

Semelhante a Python debugger

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 fatiguerDamien Seguy
 
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 maintenableChristophe Villeneuve
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_finalDuchess France
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_finalagnes_crepet
 

Semelhante a 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
 

Último

Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésSana REFAI
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirstjob4
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdfSoukainaMounawir
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 

Último (7)

Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigés
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdf
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 

Python debugger