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é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
 

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 (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 (6)

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
 
mémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoiremémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoire
 
le probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptxle probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptx
 
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
 
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdfpdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
 

Python debugger