Depurador onisciente
-
Upload
rodrigo-senra -
Category
Technology
-
view
519 -
download
4
description
Transcript of Depurador onisciente
O Depurador Onisciente
Rodrigo Dias Arruda Senra PythonNordeste 2013 / Fortaleza-CE
O Depurador Onisciente
Rodrigo Dias Arruda Senra PythonNordeste 2013 / Fortaleza-CE
Apenas um rapaz latino americano...
• Especialista em Desenv. e Proj. de SWGlobo.com
• Engenheiro de Computação Grad-MSc-PhD IC-Unicamp
• Entusiasta de FLOSS(atuante na comunidade Python desde 2000)
Roteiro do Blá
O que é um bug ?
Debugging is twice as hardas writing the code in the first
place. Therefore, if you write the code as cleverly
as possible...
Brian Kernighan
you are, by definition, not smart enough to debug it.
Brian Kernighan
“In a typical commercial development organization, the cost of providing this assurance via appropriate debugging, verification and testing activities can easily range from 50% to 75% of the total development cost.”
Brent Hailpern and Padmanabhan Santhanam.Software debugging, testing, and verification. IBM Systems Journal, 41(1):4–12, 2002
Conceitos Básicos
def soma(x, y): z = x + y return z
Timelineic=15 ic=16
soma(2,3)soma
step
Conceitos Básicos
>>> dis.disassemble(soma.func_code) 2 0 LOAD_FAST 0 (x) 3 LOAD_FAST 1 (y) 6 BINARY_ADD 7 STORE_FAST 2 (z)
3 10 LOAD_FAST 2 (z) 13 RETURN_VALUE
def soma(x, y): z = x + y return z
ic=15
ic=16
ic=15
ic=16
Timelineic=15 ic=16
soma(2,3)soma
ic=14
step
Conceitos Básicos
>>> dis.disassemble(soma.func_code) 2 0 LOAD_FAST 0 (x) 3 LOAD_FAST 1 (y) 6 BINARY_ADD 7 STORE_FAST 2 (z)
3 10 LOAD_FAST 2 (z) 13 RETURN_VALUE
def soma(x, y): z = x + y return z
Timelineic=15
soma(2,3)
ic=14
next
Ferramentas de Depuração
Ferramentas de Depuração
biblioteca-padrão• logging • traceback• inspect• dis• bdb• pdb• idle
Ferramentas de Depuração
biblioteca-padrão• logging • traceback• inspect• dis• bdb• pdb• idle
Depuradores (linha de comando)
• pydb - Rock Bernstein (2006) • pydbgr/trepan - Rock Bernstein (2009)• ipdb - Godefoide Chapelle (2010)• epdb/gepdb - Patrick Sabin (2010)• pudb - Andreas Kloeckner (2013)
Post-mortem ?
• EXDAMS (1969) - Bob Balzer [PL/I, Algol, Fortran]• ? (1993) - A. Tolmach & A. Appel [Standard ML]• ZStep95 (1997) - H. Lieberman [Lisp] • Coca (1999) - M. Ducassé [C]• Hercule (2000) - K. Renaud [Java]• Dejavu (2000) - Alpern & Ngo & Choi & Sridaharan[Java]• ODB (2005) - Bill Lewis [Java]• TOD (2007) - Guillaume Pothier, Éric Tanter and José Piquer [Java]• epdb (2010) - Patrick Sabin [Python]
História do Depurador Onisciente
Timeline 1
soma(2,3)next
O que é o Depurador Onisciente ?
Timeline 1
soma(2,3)next
O que é o Depurador Onisciente ?
Timeline 2
rnext
Timeline 1
soma(2,3)next
O que é o Depurador Onisciente ?
Timeline 2
rnext somastep
Timeline 1
soma(2,3)next
O que é o Depurador Onisciente ?
Timeline 2
rnext somastep
Modo: redo ou replay ?
Arquitetura (TOD)
http://pleiad.dcc.uchile.cl/tod/documentation/internals.html
http://www.lambdacs.com/debugger/http://www.youtube.com/watch?v=xpI8hIgOyko
ODB
Implementing a Reversible Debugger for Python (epdb)Patrick Sabin - Informatik der Technischen Universität Wien - 2010
http://github.com/rodsenra/pode
PODE
An now something completely different !
Rodrigo Dias Arruda Senrahttp://rodrigo.senra.nom.br
[email protected]@corp.globo.com
As opiniões e conclusões expressas nesta apresentação são de exclusiva responsabilidade de Rodrigo Senra.
Não é necessário requisitar permissão do autor para o uso de partes ou do todo desta apresentação, desde que não sejam feitas alterações no conteúdo reutilizado e que esta nota esteja presente na íntegra no material resultante.
Imagens e referências para outros trabalhos nesta apresentação permanecem propriedade daqueles que detêm seus direitos de copyright.
Obrigado a todos pela atenção.Rodrigo Dias Arruda Senra
http://rodrigo.senra.nom.br
[email protected]@corp.globo.com
As opiniões e conclusões expressas nesta apresentação são de exclusiva responsabilidade de Rodrigo Senra.
Não é necessário requisitar permissão do autor para o uso de partes ou do todo desta apresentação, desde que não sejam feitas alterações no conteúdo reutilizado e que esta nota esteja presente na íntegra no material resultante.
Imagens e referências para outros trabalhos nesta apresentação permanecem propriedade daqueles que detêm seus direitos de copyright.