O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Xdebug seus problemas acabaram - tdc floripa 2017

Você leva horas, dias para encontrar um bug? Não conhece o framework que trabalha ou leva dias encontrando como implementar algo? Seus problemas acabaram! Aprenda a debugar suas aplicações com Xdebug!

  • Entre para ver os comentários

Xdebug seus problemas acabaram - tdc floripa 2017

  1. 1. Seus problemas acabaram By: Vitor Mattos
  2. 2. Desenvolvedor PHP desde 2003 Amante de opensource Evangelista PHP PHP Zend Certified Engineer ( ZEND024235 ) PHPRio ( https://telegram.me/phprio ) Redes sociais: ( procure por vitormattos ) Quem sou eu?
  3. 3. Ide, e anunciai que o @PHPeste está próximo. Deixai o PHP falar por tua boca, e alertai aos nativos do TDC que a chegada de Rasmus Lerdorf é esperada, e fale ao povo de Java que ainda é tempo de conversão. Fazei isso em memória da comunidade. Alessandro Feitoza Evangelista PHP
  4. 4. Falaremos sobre: Sumário: ● O que é o xdebug? ● Porque usar o xdebug? ● Instalação ● Primeiros passos ○ Variáveis amigáveis ○ Xdebug na linha de comando ○ Removendo pogs ● Depurando em tempo real ● Code coverage ● Profiling
  5. 5. O que é o xdebug? O Xdebug é uma extensão que te ajuda a depurar seus scripts fornecendo uma grande quantidade de informações valiosas. ● Disponível desde 2002 ● Desenvolvido por Derick Rethans ● Extensão para o PHP ● Escrita em C ● Open source ● Usado para debugar e otimizar aplicações ● Utiliza o protocolo DBGp (DeBugGer Protocol) para comunicação ● Te permite fazer profiling da aplicação ● Análise de cobertura de código
  6. 6. != Por uma vida mais saudável O que é o xdebug?
  7. 7. Porque usar xdebug? Debugando sem xdebug
  8. 8. Porque usar xdebug? Debugando sem xdebug <?php echo $variavel; echo '<pre>'; var_dump($um_array); echo '</pre>'; print_r($mais_uma); error_log('passei aqui', 3, '/var/log/app/meu.log'); exit();
  9. 9. Porque usar xdebug? Debugando sem xdebug ● Alterar algo na aplicação ● Recarregar a página ● Verificar como ficou ● Modificar novamente o código ● Imprimir mais variáveis ● Repetir tudo novamente ● Esquecer de limpar os debug ou de tirar um exit ● Mandar para o chefe testar a aplicação
  10. 10. Porque usar xdebug? Debugando com xdebug ● Adicione um breakpoint ● Execute a aplicação ● Volte para a sua IDE e confira seu código ● Confira o valor de variáveis em tempo real ● Veja todo o backtrace de execução da aplicação Dica: Faça testes unitários
  11. 11. Instalação - repositório Funciona em qualquer ambiente que execute PHP, em distribuições Linux baseadas em Debian, faça da seguinte forma: ~$ sudo apt-get install php-xdebug O manual completo da extensão você encontra em: xdebug.org
  12. 12. Conferindo instalação ~$ php -v PHP 7.1.4-1+deb.sury.org~zesty+1 (cli) (built: Apr 11 2017 22:16:52) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.1.4-1, Copyright (c) 1999-2017, by Zend Technologies with Xdebug v2.5.1, Copyright (c) 2002-2017, by Derick Rethans
  13. 13. Instalação - PECL ~$ sudo pecl install xdebug
  14. 14. Conferindo instalação ~$ php -v PHP 7.1.4-1+deb.sury.org~zesty+1 (cli) (built: Apr 11 2017 22:16:52) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.1.4-1, Copyright (c) 1999-2017, by Zend Technologies with Xdebug v2.5.3, Copyright (c) 2002-2017, by Derick Rethans
  15. 15. Instalação - código fonte ~$ sudo apt-get install php phpize git ~$ git clone git://github.com/xdebug/xdebug.git ~$ cd xdebug/ ~/xdebug$ phpize ~/xdebug$ ./configure --enable-xdebug ~/xdebug$ make ~/xdebug$ sudo make install
  16. 16. Conferindo instalação ~$ php -v PHP 7.1.4-1+deb.sury.org~zesty+1 (cli) (built: Apr 11 2017 22:16:52) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.1.4-1, Copyright (c) 1999-2017, by Zend Technologies with Xdebug v2.6.0-dev, Copyright (c) 2002-2017, by Derick Rethans
  17. 17. Outras formas de certificar que a instalação está ok: ~$ cat /etc/php/7.1/mods-available/xdebug.ini zend_extension=xdebug.so ~$ php --ri xdebug ~$ php -m Em alguns casos colocar apenas o nome do binário dá problema, então, se tiver problemas, coloque o caminho absoluto do binátio do xdebug. Lembre sempre de reiniciar o servidor. Conferindo instalação
  18. 18. Arquivo de configuração - xdebug.ini zend_extension=xdebug.so [xdebug] xdebug.default_enable=on xdebug.remote_enable=on xdebug.remote_autostart=on xdebug.profiler_output_name = cachegrind.out.%u.%s.%R xdebug.profiler_enable = 0 xdebug.remote_port=9000 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_host=127.0.0.1 xdebug.remote_log=/tmp/xdebug.log ;xdebug.remote_host=remote.mypage.com xdebug.scream=0 xdebug.cli_color=On xdebug.var_display_max_depth=10 xdebug.var_display_max_children=200 xdebug.overload_var_dump = 1 xdebug.show_exception_trace = Off xdebug.trace_format = 1 ; for get memory usage, uncoment the following lines and run this script: ; https://github.com/derickr/xdebug/raw/master/contrib/tracefile-analyser.php ; xdebug.collect_return = 1 ; xdebug.auto_trace = 1 ; xdebug.show_mem_delta=1 Calma, vamos entrar em detalhes mais a frente. Qualquer dúvida, consulte o manual: https://xdebug.org/docs/all_settings
  19. 19. Variáveis amigáveis - browser O xdebug faz um monte de texto ilegível...
  20. 20. Variáveis amigáveis - browser
  21. 21. Variáveis amigáveis - browser Virar isto!
  22. 22. Variáveis amigáveis - browser E ainda pode melhorar!
  23. 23. Variáveis amigáveis - browser xdebug.dump.* No * pode colocar COOKIE, FILES, GET, POST, REQUEST, SERVER, SESSION: xdebug.dump.GET=* E ainda pode filtrar: xdebug.dump.SERVER=REMOTE_ADDR,REQUEST_METHOD
  24. 24. Variáveis amigáveis - cli zend_extension=xdebug.so [xdebug] xdebug.default_enable=on xdebug.cli_color=On xdebug.var_display_max_depth=10 xdebug.var_display_max_children=200 xdebug.overload_var_dump=1
  25. 25. POG do desespero É possível ocultar alguns erros no PHP com o @ Porém, é possível exibir novamente com o xdebug xdebug.scream=1 http://xdebug.org/docs/stack_trace http://php.net/manual/language.operators.errorcontrol.php
  26. 26. Evitando falhas de recursividade xdebug.max_nesting_level=3 ~/projetos/palestra-xdebug$ php recursive.php PHP Fatal error: Maximum function nesting level of '3' reached, aborting! in /home/vitor/projetos/palestra-xdebug/recursive.php on line 2 PHP Stack trace: PHP 1. {main}() /home/vitor/projetos/palestra-xdebug/recursive.php:0 PHP 2. a() /home/vitor/projetos/palestra-xdebug/recursive.php:5 PHP 3. a() /home/vitor/projetos/palestra-xdebug/recursive.php:3
  27. 27. Debugando ao vivo DBGp - DeBugGer: protocolo de debugging Cross-language: comum para várias linguagens (PHP, HHVM, Python, Perl,...) Compatível com diversos clientes Possibilidade de alterar valor de algumas variáveis variáveis em tempo de execução Debugging remoto Debugging condicional
  28. 28. Clientes ● PHPEclipse (Editor Plugin). ● JetBrain's PhpStorm (IDE; Commercial). ● VIM plugin (Editor Plugin). ● Emacs plugin (Editor Plugin). ● NetBeans (IDE: Windows, Linux, Mac OS X and Solaris). ● Notepad++ plugin (Editor: Windows). ● Dev-PHP (IDE: Windows) ● Eclipse plugin (IDE). ● KDevelop (IDE: Linux (KDE); Open Source). ● ActiveState's Komodo (IDE: Windows, Linux, Mac; Commercial). ● … https://xdebug.org/docs/remote
  29. 29. Xdebug no Eclipse
  30. 30. Xdebug no Eclipse 1
  31. 31. Xdebug no Eclipse 2 1 3 4
  32. 32. Xdebug no Eclipse 3 2 1
  33. 33. Xdebug no Eclipse 1 2 3 4 5
  34. 34. Arquivo de configuração - xdebug.ini zend_extension=xdebug.so [xdebug] xdebug.default_enable=on xdebug.remote_autostart=on OBS: TDD + PHPUnit também é importante!
  35. 35. Ações ao debugar Set breakpoint Step into Step opver Step return Run to cursor Resume Terminate
  36. 36. Habilitando e desabilitando Algumas IDEs necessitam de dar start e stop para iniciar o debugging, existem extensões para diversos navegadores para fazer isto de forma prática. Caso não queira extensões, há outras formas de iniciar e parar para algumas IDE (GET, COOKIE) ou diretamente no arquivo ini ● Chrome ○ Xdebug helper ○ Xdebug enabler ● Firefox ○ easy Xdebug ○ The easiest Xdebug ● Safari ○ Xdebug toogler
  37. 37. Quero ver ao vivo! Talk is cheap. Show me the code. - Linus Torvalds #Show M eTheC ode
  38. 38. Coverage ./vendor/bin/phpunit --coverage-html coverage
  39. 39. Profiling Profiler integrado do Xdebug que permite encontrar gargalos no script e visualizá-los com uma ferramenta externa, como PHP Webgrind, MacAllGrind, kcachegrind ou WinCacheGrind.
  40. 40. Profiling xdebug.ini xdebug.profiler_output_name = cachegrind.out.%u.%s.%R xdebug.profiler_enable = 1 ~$ apt-get install python graphviz ~$ git clone https://github.com/jokkedk/webgrind ~$ cd webgrind ~$ composer install ~$ php -S localhost:8000
  41. 41. Profiling - webgrind
  42. 42. Profiling - webgrind - gráfico de chamadas
  43. 43. Profiling - kcachegrind
  44. 44. O futuro Good bye PHP 5, go PHP7!!!!
  45. 45. Falamos sobre: Sumário: ● O que é o xdebug? ● Porque usar o xdebug? ● Instalação ● Primeiros passos ○ Variáveis amigáveis ○ Xdebug na linha de comando ○ Removendo pogs ● Depurando em tempo real ● Code coverage ● Profiling
  46. 46. Referências https://xdebug.org/ http://php.net/ https://github.com/jokkedk/webgrind http://kcachegrind.sourceforge.net https://phpunit.de/ https://derickrethans.nl/
  47. 47. Perguntas Redes sociais ( vitormattos )

×