Depurador onisciente

38
O Depurador Onisciente Rodrigo Dias Arruda Senra PythonNordeste 2013 / Fortaleza-CE

description

Plaestra de encerramento da PythonNordeste 2013 em Fortaleza-CE

Transcript of Depurador onisciente

Page 1: Depurador onisciente

O Depurador Onisciente

Rodrigo Dias Arruda Senra PythonNordeste 2013 / Fortaleza-CE

Page 2: Depurador onisciente

O Depurador Onisciente

Rodrigo Dias Arruda Senra PythonNordeste 2013 / Fortaleza-CE

Page 3: Depurador onisciente

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)

Page 4: Depurador onisciente

Roteiro do Blá

Page 5: Depurador onisciente
Page 6: Depurador onisciente
Page 7: Depurador onisciente
Page 8: Depurador onisciente
Page 9: Depurador onisciente

O que é um bug ?

Page 10: Depurador onisciente

Debugging is twice as hardas writing the code in the first

place. Therefore, if you write the code as cleverly

as possible...

Brian Kernighan

Page 11: Depurador onisciente

you are, by definition, not smart enough to debug it.

Brian Kernighan

Page 12: Depurador onisciente

“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

Page 13: Depurador onisciente

Conceitos Básicos

def soma(x, y): z = x + y return z

Timelineic=15 ic=16

soma(2,3)soma

step

Page 14: Depurador onisciente

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

Page 15: Depurador onisciente

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

Page 16: Depurador onisciente
Page 17: Depurador onisciente

Ferramentas de Depuração

Page 18: Depurador onisciente

Ferramentas de Depuração

biblioteca-padrão• logging • traceback• inspect• dis• bdb• pdb• idle

Page 19: Depurador onisciente

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)

Page 20: Depurador onisciente
Page 21: Depurador onisciente
Page 22: Depurador onisciente

Post-mortem ?

Page 23: Depurador onisciente
Page 24: Depurador onisciente

• 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

Page 25: Depurador onisciente

Timeline 1

soma(2,3)next

O que é o Depurador Onisciente ?

Page 26: Depurador onisciente

Timeline 1

soma(2,3)next

O que é o Depurador Onisciente ?

Timeline 2

rnext

Page 27: Depurador onisciente

Timeline 1

soma(2,3)next

O que é o Depurador Onisciente ?

Timeline 2

rnext somastep

Page 28: Depurador onisciente

Timeline 1

soma(2,3)next

O que é o Depurador Onisciente ?

Timeline 2

rnext somastep

Modo: redo ou replay ?

Page 29: Depurador onisciente

Arquitetura (TOD)

http://pleiad.dcc.uchile.cl/tod/documentation/internals.html

Page 30: Depurador onisciente
Page 32: Depurador onisciente

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

Page 34: Depurador onisciente
Page 35: Depurador onisciente

An now something completely different !

Page 36: Depurador onisciente
Page 37: Depurador onisciente

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.

Page 38: Depurador onisciente

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.