SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Python Debugger

Arthur F. M. Alvim
http://cin.ufpe.br/∼afma/

XVII Encontro do PUG-PE
Introdução    O Módulo PDB     Comandos       Exemplos      Outros Debuggers   Conclusão



Índice
       1 Introdução
            Sobre o Python Debugger
            Objetivos da Palestra Relâmpago
       2 O Módulo PDB
           Como Funciona?
       3 Comandos
           Comandos
       4 Exemplos
           Vamos Brincar!
       5 Outros Debuggers
           Outros Debuggers
       6 Conclusão

                    Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger   2 / 18
Introdução   O Módulo PDB     Comandos       Exemplos      Outros Debuggers   Conclusão



Introdução




                            Introdução



                   Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger   3 / 18
Introdução        O Módulo PDB      Comandos       Exemplos      Outros Debuggers   Conclusão



Sobre o Python Debugger

             • Dê o seu "import pdb". É uma das baterias do Python
               (módulo pdb).
             • Funcionamento como um shell interativo que debuga o
               código fonte.
             • Permite que sejam realizados paradas ou mesmo a
               execução passo-a-passo do código fonte para que este
               seja inspecionado, entre outras funcionalidades.
             • O debugger é extensível - Ele é definido na classe Pdb.
             • Muito melhor do que o método "debug ’Lala’ mode"
        Documentação do pdb




                         Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger   4 / 18
Introdução        O Módulo PDB     Comandos       Exemplos      Outros Debuggers   Conclusão



Objetivos da Palestra Relâmpago

             • Entender o funcionamento básico do Python Debugger.
             • Aplicá-lo em alguns exemplos práticos.




                        Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger   5 / 18
Introdução   O Módulo PDB     Comandos       Exemplos      Outros Debuggers   Conclusão



O Módulo PDB




                     O Módulo PDB



                   Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger   6 / 18
Introdução        O Módulo PDB     Comandos       Exemplos      Outros Debuggers   Conclusão



Como Funciona?

       Example
       » # exemplo do debug ’Lala’ mode
       » print ’Lala Foi!’
       » # código que vc quer funcionando
       » print variavel
       » print ’Lala Voltou!’

             • Bastante útil em certas ocasiões, mas...
             • Não permite que sejam feitas modificações em tempo de
               execução.




                        Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger   7 / 18
Introdução    O Módulo PDB     Comandos       Exemplos      Outros Debuggers   Conclusão



Como Funciona?

       Pdb
       Para utilizar o debugger, você deverá importar o módulo pdb, o
       módulo a ser testado e chamar o método pdb.run() passando o
       código a ser testado como parâmetro.

       Example
       » # exemplo usando o pdb
       » import pdb
       » import meumodulo
       » pdb.run("meumodulo.main()")
       (Pdb) continue # agora ele executará
       » print ’Hello World!’


                    Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger   8 / 18
Introdução    O Módulo PDB     Comandos       Exemplos      Outros Debuggers   Conclusão



Como Funciona?

       Outras Formas de Usar o Pdb
       Podemos executá-lo diretamente pela linha de comando:
       $ python path_to_python_libs_pdb.py meumodulo.py

       Example
       » # ou ainda podemos executá-lo quando ocorrer um erro:
       » import pdb, meumodulo
       » Traceback( most recent call last): ...
       » NameError: Global name ’hello’ is not defined
       » pdb.pm()
       > ./meumodulo.py(2)main()
       -> print hello
       (Pdb)_

                    Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger   9 / 18
Introdução      O Módulo PDB      Comandos      Exemplos      Outros Debuggers      Conclusão



Como Funciona?

       Outras Formas de Usar o Pdb
       Podemos também executá-lo na chamado do código pela
       função set_trace():
       $ python meuarquivo.py

       Example
       # meuarquivo.py
       import pdb, meumodulo
       print ’iae bunitao’ pdb.set_trace() # onde você quer que o
       debug comece.
       # código...
       executando...
       iae bunitao
       (Pdb)_

                      Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger     10 / 18
Introdução   O Módulo PDB      Comandos      Exemplos      Outros Debuggers      Conclusão



Comandos




                            Comandos



                   Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger     11 / 18
Introdução        O Módulo PDB          Comandos            Exemplos           Outros Debuggers          Conclusão



Tabela com os Comandos do PDB

             Comando    Forma Simplificada   Descrição
             break              b           Insere um breakpoint (sem parâmetro lista os breakpoints).
             tbreak          tbreak         Insere um breakpoint temporário.
             clear              cl          Remove um breakpoint.
             enable          enable         Habilita um ou mais breakpoints.
             disable         disable        Desabilita um ou mais breakpoints.
             continue           c           Continua a execução do programa.
             exit               q           Aborta a execução do programa.
             help               h           Imprime uma lista de comandos ou ajuda.
             list               l           Mostra o cursor do pdb no código fonte.
             next               n           Executa linha mas não entra em funções ([s]tep).
             return             r           Continua execução até a última função dar o retorno.
             quit               q           Sai do debugger.

                             Tabela: Tabelas de Comandos do pdb




                          Arthur F. M. Alvim - arth.alvim@gmail.com               Python Debugger          12 / 18
Introdução   O Módulo PDB      Comandos      Exemplos      Outros Debuggers      Conclusão



Exemplos




                            Exemplos



                   Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger     13 / 18
Introdução   O Módulo PDB      Comandos      Exemplos      Outros Debuggers      Conclusão



Vamos Brincar!




              VAMOS BRINCAR!



                   Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger     14 / 18
Introdução   O Módulo PDB      Comandos      Exemplos      Outros Debuggers      Conclusão



Outros Debuggers




               Outros Debuggers



                   Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger     15 / 18
Introdução        O Módulo PDB       Comandos      Exemplos      Outros Debuggers      Conclusão



Outros Debuggers
             • Debuggers
                    WINPdb (GPL, remote debbuging, 20x + rápido que o pdb)
                    pydb
             • IDEs com Debug
                    PyDev (Eclipse Plugin)
                    Komodo
                    PyCharm
        ++ Python Debuggers




                         Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger     16 / 18
Introdução   O Módulo PDB      Comandos      Exemplos      Outros Debuggers      Conclusão



Conclusão




                            Conclusão



                   Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger     17 / 18
Introdução   O Módulo PDB      Comandos      Exemplos      Outros Debuggers      Conclusão



Conclusão




             ?
                                                   Contato?
                                                 Arthur Alvim
                                            arth.alvim@gmail.com
                                                 @arthuralvim
                                          facebook.com/arthur.alvim



                      Obrigado pela Atenção!


                   Arthur F. M. Alvim - arth.alvim@gmail.com   Python Debugger     18 / 18

Contenu connexe

Tendances

Python Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem PythonPython Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem Pythonantonio sérgio nogueira
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com PythonJardel Weyrich
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alvesGrupython Ufla
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonGiancarlo Silva
 
Laboratório de Programação I: Arquivos (texto) em disco
Laboratório de Programação I: Arquivos (texto) em discoLaboratório de Programação I: Arquivos (texto) em disco
Laboratório de Programação I: Arquivos (texto) em discoAlex Camargo
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonFabio Spanhol
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonJanderson Campêlo
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017Vitor Mattos
 
Linguagem C e Dev-C++ Algumas Explicações
Linguagem C e Dev-C++  Algumas ExplicaçõesLinguagem C e Dev-C++  Algumas Explicações
Linguagem C e Dev-C++ Algumas Explicaçõesnataferraz
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolsoJean Lopes
 
BDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasBDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasVitor Mattos
 
Seminário sobre GO
Seminário sobre GOSeminário sobre GO
Seminário sobre GOgptavares
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem pythonBruno Maspoli
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação PythonCarlos Schults
 

Tendances (20)

Python Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem PythonPython Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem Python
 
Apostila linguagem pascal
Apostila linguagem pascalApostila linguagem pascal
Apostila linguagem pascal
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem Python
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Lp m2(parte1)
Lp m2(parte1)Lp m2(parte1)
Lp m2(parte1)
 
Laboratório de Programação I: Arquivos (texto) em disco
Laboratório de Programação I: Arquivos (texto) em discoLaboratório de Programação I: Arquivos (texto) em disco
Laboratório de Programação I: Arquivos (texto) em disco
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com Python
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
 
O compilador dev c++
O compilador dev c++O compilador dev c++
O compilador dev c++
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017
 
Linguagem C e Dev-C++ Algumas Explicações
Linguagem C e Dev-C++  Algumas ExplicaçõesLinguagem C e Dev-C++  Algumas Explicações
Linguagem C e Dev-C++ Algumas Explicações
 
Linguagem assembly
Linguagem assemblyLinguagem assembly
Linguagem assembly
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
 
BDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasBDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemas
 
Seminário sobre GO
Seminário sobre GOSeminário sobre GO
Seminário sobre GO
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem python
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
 

En vedette

(entregando djangoapps)@tangerinalab - pugpe xv
(entregando djangoapps)@tangerinalab - pugpe xv(entregando djangoapps)@tangerinalab - pugpe xv
(entregando djangoapps)@tangerinalab - pugpe xvraonyaraujo
 
Peça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDDPeça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDDRafael Carício
 
Qml + Python
Qml + PythonQml + Python
Qml + Pythonpugpe
 
Rain Toolbox - Previsão de Chuvas
Rain Toolbox -  Previsão de ChuvasRain Toolbox -  Previsão de Chuvas
Rain Toolbox - Previsão de Chuvaspugpe
 
Criando comunidades bem sucedidas
Criando comunidades bem sucedidasCriando comunidades bem sucedidas
Criando comunidades bem sucedidaspugpe
 
Migrando do App Engine para o Heroku
Migrando do App Engine para o HerokuMigrando do App Engine para o Heroku
Migrando do App Engine para o HerokuFilipe Ximenes
 
Wikilytics
WikilyticsWikilytics
Wikilyticspugpe
 
Apresentando o I Toró de Palestras do PUG-PE
Apresentando o I Toró de Palestras do PUG-PEApresentando o I Toró de Palestras do PUG-PE
Apresentando o I Toró de Palestras do PUG-PEMarcel Caraciolo
 
Clustering com numpy e cython
Clustering com numpy e cythonClustering com numpy e cython
Clustering com numpy e cythonAnderson Dantas
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Developmentpugpe
 
Porque foi bom aprender com Python
Porque foi bom aprender com PythonPorque foi bom aprender com Python
Porque foi bom aprender com PythonFernando Rocha
 
Palestra sobre Inteligência Coletiva
Palestra sobre Inteligência ColetivaPalestra sobre Inteligência Coletiva
Palestra sobre Inteligência Coletivapugpe
 
Palestra sobre Collections com Python
Palestra sobre Collections com PythonPalestra sobre Collections com Python
Palestra sobre Collections com Pythonpugpe
 
Pyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebPyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebNielson Santana
 
Python e Cadeias de Markov GHMM
Python e Cadeias de Markov GHMMPython e Cadeias de Markov GHMM
Python e Cadeias de Markov GHMMpugpe
 
NoSQL com Cassandra e Python
NoSQL com Cassandra e PythonNoSQL com Cassandra e Python
NoSQL com Cassandra e Pythonpugpe
 

En vedette (20)

(entregando djangoapps)@tangerinalab - pugpe xv
(entregando djangoapps)@tangerinalab - pugpe xv(entregando djangoapps)@tangerinalab - pugpe xv
(entregando djangoapps)@tangerinalab - pugpe xv
 
Pep 8
Pep 8Pep 8
Pep 8
 
Peça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDDPeça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDD
 
Qml + Python
Qml + PythonQml + Python
Qml + Python
 
Rain Toolbox - Previsão de Chuvas
Rain Toolbox -  Previsão de ChuvasRain Toolbox -  Previsão de Chuvas
Rain Toolbox - Previsão de Chuvas
 
Criando comunidades bem sucedidas
Criando comunidades bem sucedidasCriando comunidades bem sucedidas
Criando comunidades bem sucedidas
 
Migrando do App Engine para o Heroku
Migrando do App Engine para o HerokuMigrando do App Engine para o Heroku
Migrando do App Engine para o Heroku
 
Pug
PugPug
Pug
 
Wikilytics
WikilyticsWikilytics
Wikilytics
 
Apresentando o I Toró de Palestras do PUG-PE
Apresentando o I Toró de Palestras do PUG-PEApresentando o I Toró de Palestras do PUG-PE
Apresentando o I Toró de Palestras do PUG-PE
 
Clustering com numpy e cython
Clustering com numpy e cythonClustering com numpy e cython
Clustering com numpy e cython
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 
Porque foi bom aprender com Python
Porque foi bom aprender com PythonPorque foi bom aprender com Python
Porque foi bom aprender com Python
 
Arduino e python
Arduino e pythonArduino e python
Arduino e python
 
Palestra sobre Inteligência Coletiva
Palestra sobre Inteligência ColetivaPalestra sobre Inteligência Coletiva
Palestra sobre Inteligência Coletiva
 
Palestra sobre Collections com Python
Palestra sobre Collections com PythonPalestra sobre Collections com Python
Palestra sobre Collections com Python
 
Pyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebPyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para Web
 
REST APIs com Django
REST APIs com DjangoREST APIs com Django
REST APIs com Django
 
Python e Cadeias de Markov GHMM
Python e Cadeias de Markov GHMMPython e Cadeias de Markov GHMM
Python e Cadeias de Markov GHMM
 
NoSQL com Cassandra e Python
NoSQL com Cassandra e PythonNoSQL com Cassandra e Python
NoSQL com Cassandra e Python
 

Similaire à Python Debugger - PUG-PE

Pug pe vii - luciano rodrigues - debugger
Pug pe vii - luciano rodrigues - debuggerPug pe vii - luciano rodrigues - debugger
Pug pe vii - luciano rodrigues - debuggerpugpe
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonguestac3de
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 
Administração de sistemas usando Python
Administração de sistemas usando PythonAdministração de sistemas usando Python
Administração de sistemas usando PythonHelio Loureiro
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 
Introdução+à+linguagem+c
Introdução+à+linguagem+cIntrodução+à+linguagem+c
Introdução+à+linguagem+cThiago Freitas
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLJuliano Atanazio
 
Introdução à Linguagem de Programação GO
Introdução à Linguagem de Programação GOIntrodução à Linguagem de Programação GO
Introdução à Linguagem de Programação GOJose Augusto Cintra
 
Aula6 Cont
Aula6 ContAula6 Cont
Aula6 Contwillians
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 
Apostila de Linguagem C
Apostila de Linguagem CApostila de Linguagem C
Apostila de Linguagem CDaniel Barão
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)Sérgio Silva
 

Similaire à Python Debugger - PUG-PE (20)

Pug pe vii - luciano rodrigues - debugger
Pug pe vii - luciano rodrigues - debuggerPug pe vii - luciano rodrigues - debugger
Pug pe vii - luciano rodrigues - debugger
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
aula5_python.pdf
aula5_python.pdfaula5_python.pdf
aula5_python.pdf
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Administração de sistemas usando Python
Administração de sistemas usando PythonAdministração de sistemas usando Python
Administração de sistemas usando Python
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Calourada2010
Calourada2010Calourada2010
Calourada2010
 
PHP-CLI em 7 passos
PHP-CLI em 7 passosPHP-CLI em 7 passos
PHP-CLI em 7 passos
 
Introdução+à+linguagem+c
Introdução+à+linguagem+cIntrodução+à+linguagem+c
Introdução+à+linguagem+c
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQL
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
 
Apostila c
Apostila cApostila c
Apostila c
 
Introdução à Linguagem de Programação GO
Introdução à Linguagem de Programação GOIntrodução à Linguagem de Programação GO
Introdução à Linguagem de Programação GO
 
Aula6 Cont
Aula6 ContAula6 Cont
Aula6 Cont
 
Introdução à linguagem python
Introdução à linguagem pythonIntrodução à linguagem python
Introdução à linguagem python
 
LP1 P01 - Python.pdf
LP1 P01 - Python.pdfLP1 P01 - Python.pdf
LP1 P01 - Python.pdf
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
Apostila de Linguagem C
Apostila de Linguagem CApostila de Linguagem C
Apostila de Linguagem C
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)
 

Python Debugger - PUG-PE

  • 1. Python Debugger Arthur F. M. Alvim http://cin.ufpe.br/∼afma/ XVII Encontro do PUG-PE
  • 2. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Índice 1 Introdução Sobre o Python Debugger Objetivos da Palestra Relâmpago 2 O Módulo PDB Como Funciona? 3 Comandos Comandos 4 Exemplos Vamos Brincar! 5 Outros Debuggers Outros Debuggers 6 Conclusão Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 2 / 18
  • 3. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Introdução Introdução Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 3 / 18
  • 4. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Sobre o Python Debugger • Dê o seu "import pdb". É uma das baterias do Python (módulo pdb). • Funcionamento como um shell interativo que debuga o código fonte. • Permite que sejam realizados paradas ou mesmo a execução passo-a-passo do código fonte para que este seja inspecionado, entre outras funcionalidades. • O debugger é extensível - Ele é definido na classe Pdb. • Muito melhor do que o método "debug ’Lala’ mode" Documentação do pdb Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 4 / 18
  • 5. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Objetivos da Palestra Relâmpago • Entender o funcionamento básico do Python Debugger. • Aplicá-lo em alguns exemplos práticos. Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 5 / 18
  • 6. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão O Módulo PDB O Módulo PDB Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 6 / 18
  • 7. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Como Funciona? Example » # exemplo do debug ’Lala’ mode » print ’Lala Foi!’ » # código que vc quer funcionando » print variavel » print ’Lala Voltou!’ • Bastante útil em certas ocasiões, mas... • Não permite que sejam feitas modificações em tempo de execução. Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 7 / 18
  • 8. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Como Funciona? Pdb Para utilizar o debugger, você deverá importar o módulo pdb, o módulo a ser testado e chamar o método pdb.run() passando o código a ser testado como parâmetro. Example » # exemplo usando o pdb » import pdb » import meumodulo » pdb.run("meumodulo.main()") (Pdb) continue # agora ele executará » print ’Hello World!’ Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 8 / 18
  • 9. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Como Funciona? Outras Formas de Usar o Pdb Podemos executá-lo diretamente pela linha de comando: $ python path_to_python_libs_pdb.py meumodulo.py Example » # ou ainda podemos executá-lo quando ocorrer um erro: » import pdb, meumodulo » Traceback( most recent call last): ... » NameError: Global name ’hello’ is not defined » pdb.pm() > ./meumodulo.py(2)main() -> print hello (Pdb)_ Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 9 / 18
  • 10. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Como Funciona? Outras Formas de Usar o Pdb Podemos também executá-lo na chamado do código pela função set_trace(): $ python meuarquivo.py Example # meuarquivo.py import pdb, meumodulo print ’iae bunitao’ pdb.set_trace() # onde você quer que o debug comece. # código... executando... iae bunitao (Pdb)_ Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 10 / 18
  • 11. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Comandos Comandos Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 11 / 18
  • 12. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Tabela com os Comandos do PDB Comando Forma Simplificada Descrição break b Insere um breakpoint (sem parâmetro lista os breakpoints). tbreak tbreak Insere um breakpoint temporário. clear cl Remove um breakpoint. enable enable Habilita um ou mais breakpoints. disable disable Desabilita um ou mais breakpoints. continue c Continua a execução do programa. exit q Aborta a execução do programa. help h Imprime uma lista de comandos ou ajuda. list l Mostra o cursor do pdb no código fonte. next n Executa linha mas não entra em funções ([s]tep). return r Continua execução até a última função dar o retorno. quit q Sai do debugger. Tabela: Tabelas de Comandos do pdb Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 12 / 18
  • 13. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Exemplos Exemplos Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 13 / 18
  • 14. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Vamos Brincar! VAMOS BRINCAR! Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 14 / 18
  • 15. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Outros Debuggers Outros Debuggers Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 15 / 18
  • 16. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Outros Debuggers • Debuggers WINPdb (GPL, remote debbuging, 20x + rápido que o pdb) pydb • IDEs com Debug PyDev (Eclipse Plugin) Komodo PyCharm ++ Python Debuggers Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 16 / 18
  • 17. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Conclusão Conclusão Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 17 / 18
  • 18. Introdução O Módulo PDB Comandos Exemplos Outros Debuggers Conclusão Conclusão ? Contato? Arthur Alvim arth.alvim@gmail.com @arthuralvim facebook.com/arthur.alvim Obrigado pela Atenção! Arthur F. M. Alvim - arth.alvim@gmail.com Python Debugger 18 / 18