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

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