Depurador onisciente

Preview:

DESCRIPTION

Plaestra de encerramento da PythonNordeste 2013 em Fortaleza-CE

Citation preview

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

Implementing a Reversible Debugger for Python (epdb)Patrick Sabin - Informatik der Technischen Universität Wien - 2010

An now something completely different !

Rodrigo Dias Arruda Senrahttp://rodrigo.senra.nom.br

rsenra@acm.orgrodrigo.senra@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

rsenra@acm.orgrodrigo.senra@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.

Recommended