xdebug seus problemas acabaram - tdc - phpeste
TRANSCRIPT
![Page 1: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/1.jpg)
xdebug
Seus problemas acabaramVitor Mattos
![Page 2: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/2.jpg)
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
![Page 3: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/3.jpg)
Desenvolvedor PHP desde 2003
Amante de opensource
Evangelista PHP
PHPRio ( http://telegram.me/phprio )
Contatos:
http://telegram.me/VitorMattos
Quem sou eu?
![Page 4: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/4.jpg)
!=Por uma vida mais saudável
O que é o xdebug?
![Page 5: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/5.jpg)
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
![Page 6: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/6.jpg)
Porque usar xdebug?Debugando sem xdebug
![Page 7: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/7.jpg)
Porque usar xdebug?Debugando sem xdebug
<?phpecho $variavel;echo '<pre>';var_dump($um_array);echo '</pre>';print_r($mais_uma);error_log('passei aqui', 3, '/var/log/app/meu.log');exit();
![Page 8: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/8.jpg)
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
![Page 9: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/9.jpg)
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
![Page 10: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/10.jpg)
Instalação - repositórioFunciona 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
![Page 11: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/11.jpg)
Conferindo instalação~$ php -v
PHP 7.0.8-0ubuntu0.16.04.2 (cli) ( NTS )Copyright (c) 1997-2016 The PHP GroupZend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.8-0ubuntu0.16.04.2, Copyright (c) 1999-2016, by Zend Technologies with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans
![Page 12: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/12.jpg)
Instalação - PECL~$ sudo pecl install xdebug
![Page 13: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/13.jpg)
Conferindo instalação~$ php -v
PHP 7.0.8-0ubuntu0.16.04.2 (cli) ( NTS )Copyright (c) 1997-2016 The PHP GroupZend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.8-0ubuntu0.16.04.2, Copyright (c) 1999-2016, by Zend Technologies with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans
![Page 14: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/14.jpg)
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
![Page 15: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/15.jpg)
Conferindo instalação~$ php -v
PHP 7.0.8-0ubuntu0.16.04.2 (cli) ( NTS )Copyright (c) 1997-2016 The PHP GroupZend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.8-0ubuntu0.16.04.2, Copyright (c) 1999-2016, by Zend Technologies with Xdebug v2.5.0-dev, Copyright (c) 2002-2016, by Derick Rethans
![Page 16: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/16.jpg)
Conferindo instalação~$ cat /etc/php/7.0/mods-available/xdebug.ini
zend_extension=xdebug.so
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
![Page 17: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/17.jpg)
Arquivo de configuração - xdebug.inizend_extension=xdebug.so
[xdebug]xdebug.default_enable=onxdebug.remote_enable=onxdebug.remote_autostart=onxdebug.profiler_output_name = cachegrind.out.%u.%s.%Rxdebug.profiler_enable = 0xdebug.remote_port=9000xdebug.remote_handler=dbgpxdebug.remote_mode=reqxdebug.remote_host=127.0.0.1xdebug.remote_log=/tmp/xdebug.log;xdebug.remote_host=remote.mypage.comxdebug.scream=0xdebug.cli_color=Onxdebug.var_display_max_depth=10xdebug.var_display_max_children=200xdebug.overload_var_dump = 1xdebug.show_exception_trace = Offxdebug.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
![Page 18: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/18.jpg)
Variáveis amigáveis - browserO xdebug faz isto...
![Page 19: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/19.jpg)
Variáveis amigáveis - browser
![Page 20: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/20.jpg)
Variáveis amigáveis - browserVirar isto!
![Page 21: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/21.jpg)
Variáveis amigáveis - browserE ainda pode melhorar!
![Page 22: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/22.jpg)
Variáveis amigáveis - browserxdebug.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
![Page 23: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/23.jpg)
Variáveis amigáveis - clizend_extension=xdebug.so
[xdebug]xdebug.default_enable=onxdebug.cli_color=Onxdebug.var_display_max_depth=10xdebug.var_display_max_children=200xdebug.overload_var_dump=1
![Page 24: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/24.jpg)
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_tracehttp://php.net/manual/language.operators.errorcontrol.php
![Page 25: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/25.jpg)
Evitando falhas de recursividadexdebug.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 2PHP Stack trace:PHP 1. {main}() /home/vitor/projetos/palestra-xdebug/recursive.php:0PHP 2. a() /home/vitor/projetos/palestra-xdebug/recursive.php:5PHP 3. a() /home/vitor/projetos/palestra-xdebug/recursive.php:3
![Page 26: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/26.jpg)
Debugando ao vivoDBGp - 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
![Page 27: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/27.jpg)
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
![Page 28: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/28.jpg)
Xdebug no Eclipse
![Page 29: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/29.jpg)
Xdebug no Eclipse
1
![Page 30: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/30.jpg)
Xdebug no Eclipse
2
13
4
![Page 31: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/31.jpg)
Xdebug no Eclipse
3
2
1
![Page 32: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/32.jpg)
Xdebug no Eclipse
1
2
3
4
5
![Page 33: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/33.jpg)
Arquivo de configuração - xdebug.inizend_extension=xdebug.so
[xdebug]xdebug.default_enable=onxdebug.remote_autostart=on
OBS: TDD + PHPUnit também é importante!
![Page 34: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/34.jpg)
Ações ao debugarSet breakpoint
Step into
Step opver
Step return
Run to cursor
Resume
Terminate
![Page 35: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/35.jpg)
Habilitando e desabilitandoAlgumas 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
![Page 36: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/36.jpg)
Quero ver ao vivo!
Talk is cheap.
Show me the code.- Linus Torvalds
#ShowMeTheCode
![Page 37: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/37.jpg)
Coverage./vendor/bin/phpunit --coverage-html coverage
![Page 38: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/38.jpg)
ProfilingProfiler integrado do Xdebug que permite encontrar gargalos no script e visualizá-los com uma ferramenta externa, como PHP Webgrind, MacAllGrind, kcachegrind ou WinCacheGrind.
![Page 39: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/39.jpg)
Profilingxdebug.inixdebug.profiler_output_name = cachegrind.out.%u.%s.%Rxdebug.profiler_enable = 1
~$ apt-get install python graphviz~$ git clone https://github.com/jokkedk/webgrind
~$ cd webgrind
~$ composer install
~$ php -S localhost:8000
![Page 40: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/40.jpg)
Profiling - webgrind
![Page 41: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/41.jpg)
Profiling - webgrind - gráfico de chamadas
![Page 42: Xdebug seus problemas acabaram - TDC - PHPeste](https://reader033.vdocuments.net/reader033/viewer/2022042600/58edf3bb1a28abce428b45a5/html5/thumbnails/42.jpg)
Profiling - kcachegrind