SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
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 SW
Globo.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 hard
as 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
Timeline
ic=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
Timeline
ic=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
Timeline
ic=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 soma
step
Timeline 1
soma(2,3)
next
O que é o Depurador Onisciente ?
Timeline 2
rnext soma
step
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 Senra
http://rodrigo.senra.nom.br
rsenra@acm.org
rodrigo.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.org
rodrigo.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.

Mais conteúdo relacionado

Mais procurados

Linguagem de Programação
Linguagem de ProgramaçãoLinguagem de Programação
Linguagem de Programação
moiplabs
 

Mais procurados (6)

Cases de Python no 7Masters 2012
Cases de Python no 7Masters 2012Cases de Python no 7Masters 2012
Cases de Python no 7Masters 2012
 
Linguagem de Programação
Linguagem de ProgramaçãoLinguagem de Programação
Linguagem de Programação
 
Porque python é legal! d
Porque python é legal!  dPorque python é legal!  d
Porque python é legal! d
 
Python e tipagem estática
Python e tipagem estáticaPython e tipagem estática
Python e tipagem estática
 
Arduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoArduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojo
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
 

Destaque

Destaque (9)

Organicer: Organizando informação com Python
Organicer: Organizando informação com PythonOrganicer: Organizando informação com Python
Organicer: Organizando informação com Python
 
Linked data at globo.com
Linked data at globo.comLinked data at globo.com
Linked data at globo.com
 
Tech talk about iswc2013
Tech talk about iswc2013Tech talk about iswc2013
Tech talk about iswc2013
 
Uma breve história no tempo...da computação
Uma breve história no tempo...da computaçãoUma breve história no tempo...da computação
Uma breve história no tempo...da computação
 
Rest - Representational State Transfer (EMC BRDC Internal Tech talk)
Rest - Representational State Transfer (EMC BRDC Internal Tech talk)Rest - Representational State Transfer (EMC BRDC Internal Tech talk)
Rest - Representational State Transfer (EMC BRDC Internal Tech talk)
 
Brainiak - uma API REST Hipermedia
Brainiak - uma API REST Hipermedia Brainiak - uma API REST Hipermedia
Brainiak - uma API REST Hipermedia
 
Rest, Gateway e Compiladores
Rest, Gateway e CompiladoresRest, Gateway e Compiladores
Rest, Gateway e Compiladores
 
pa-pe-pi-po-pure Python Text Processing
pa-pe-pi-po-pure Python Text Processingpa-pe-pi-po-pure Python Text Processing
pa-pe-pi-po-pure Python Text Processing
 
Python Brasil 2010 - Potter vs Voldemort - Lições ofidiglotas da prática Pyth...
Python Brasil 2010 - Potter vs Voldemort - Lições ofidiglotas da prática Pyth...Python Brasil 2010 - Potter vs Voldemort - Lições ofidiglotas da prática Pyth...
Python Brasil 2010 - Potter vs Voldemort - Lições ofidiglotas da prática Pyth...
 

Semelhante a Depurador onisciente

Semelhante a Depurador onisciente (20)

Mergulhando no ecossistema .NET
Mergulhando no ecossistema .NETMergulhando no ecossistema .NET
Mergulhando no ecossistema .NET
 
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
 
Codacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJ
Codacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJCodacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJ
Codacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJ
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vida
 
Campus Party Brasil 2010 - ALM - Application Lifecycle Management
Campus Party Brasil 2010 - ALM - Application Lifecycle ManagementCampus Party Brasil 2010 - ALM - Application Lifecycle Management
Campus Party Brasil 2010 - ALM - Application Lifecycle Management
 
Dismistificando deep learning v2.1
Dismistificando deep learning v2.1Dismistificando deep learning v2.1
Dismistificando deep learning v2.1
 
[qCon Rio 2015] Arquitetura Incremental
[qCon Rio 2015] Arquitetura Incremental[qCon Rio 2015] Arquitetura Incremental
[qCon Rio 2015] Arquitetura Incremental
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012
 
Dividindo para conquistar: microservicos com o jeitinho .NET
Dividindo para conquistar: microservicos com o jeitinho .NETDividindo para conquistar: microservicos com o jeitinho .NET
Dividindo para conquistar: microservicos com o jeitinho .NET
 
Introdução a DevOps e Continuous delivery agileday
Introdução a DevOps e Continuous delivery   agiledayIntrodução a DevOps e Continuous delivery   agileday
Introdução a DevOps e Continuous delivery agileday
 
Como desenvolver-software
Como desenvolver-softwareComo desenvolver-software
Como desenvolver-software
 
Coding Dojo - Aplicando Princípios Ágeis
Coding Dojo - Aplicando Princípios ÁgeisCoding Dojo - Aplicando Princípios Ágeis
Coding Dojo - Aplicando Princípios Ágeis
 
Como desenvolver softwares utilizando tecnologias microsoft
Como desenvolver softwares utilizando tecnologias microsoftComo desenvolver softwares utilizando tecnologias microsoft
Como desenvolver softwares utilizando tecnologias microsoft
 
QCon Rio - Mudando o foco: de processos para pessoas
QCon Rio - Mudando o foco: de processos para pessoasQCon Rio - Mudando o foco: de processos para pessoas
QCon Rio - Mudando o foco: de processos para pessoas
 
QConSP: Vivenciando dev ops para além da automação de infraestrutura
QConSP: Vivenciando dev ops para além da automação de infraestruturaQConSP: Vivenciando dev ops para além da automação de infraestrutura
QConSP: Vivenciando dev ops para além da automação de infraestrutura
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
 
ASP NET CORE DOCKER LINUX AZURE
ASP NET CORE DOCKER LINUX AZUREASP NET CORE DOCKER LINUX AZURE
ASP NET CORE DOCKER LINUX AZURE
 
Testes de Software - Módulo 1
Testes de Software - Módulo 1Testes de Software - Módulo 1
Testes de Software - Módulo 1
 
5º ck o java e o android no iot
5º ck o java e o android no iot5º ck o java e o android no iot
5º ck o java e o android no iot
 

Último

Último (6)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Depurador onisciente

  • 1. O Depurador Onisciente Rodrigo Dias Arruda Senra PythonNordeste 2013 / Fortaleza-CE
  • 2. O Depurador Onisciente Rodrigo Dias Arruda Senra PythonNordeste 2013 / Fortaleza-CE
  • 3. Apenas um rapaz latino americano... •Especialista em Desenv. e Proj. de SW Globo.com •Engenheiro de Computação Grad-MSc-PhD IC-Unicamp •Entusiasta de FLOSS (atuante na comunidade Python desde 2000)
  • 5.
  • 6.
  • 7.
  • 8.
  • 9. O que é um bug ?
  • 10. Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible... Brian Kernighan
  • 11. you are, by definition, not smart enough to debug it. Brian Kernighan
  • 12. “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
  • 13. Conceitos Básicos def soma(x, y): z = x + y return z Timeline ic=15 ic=16 soma(2,3) soma step
  • 14. 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 Timeline ic=15 ic=16 soma(2,3) soma ic=14 step
  • 15. 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 Timeline ic=15 soma(2,3) ic=14 next
  • 16.
  • 18. Ferramentas de Depuração biblioteca-padrão • logging • traceback • inspect • dis • bdb • pdb • idle
  • 19. 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)
  • 20.
  • 21.
  • 23.
  • 24. • 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
  • 25. Timeline 1 soma(2,3) next O que é o Depurador Onisciente ?
  • 26. Timeline 1 soma(2,3) next O que é o Depurador Onisciente ? Timeline 2 rnext
  • 27. Timeline 1 soma(2,3) next O que é o Depurador Onisciente ? Timeline 2 rnext soma step
  • 28. Timeline 1 soma(2,3) next O que é o Depurador Onisciente ? Timeline 2 rnext soma step Modo: redo ou replay ?
  • 30.
  • 32. Implementing a Reversible Debugger for Python (epdb) Patrick Sabin - Informatik der Technischen Universität Wien - 2010
  • 34.
  • 36.
  • 37. Rodrigo Dias Arruda Senra http://rodrigo.senra.nom.br rsenra@acm.org rodrigo.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.
  • 38. Obrigado a todos pela atenção. Rodrigo Dias Arruda Senra http://rodrigo.senra.nom.br rsenra@acm.org rodrigo.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.