xdebug seus problemas acabaram - tdc - phpeste

43
xdebug Seus problemas acabaram Vitor Mattos

Upload: vitor-mattos

Post on 22-Jan-2018

310 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Xdebug   seus problemas acabaram - TDC - PHPeste

xdebug

Seus problemas acabaramVitor Mattos

Page 2: Xdebug   seus problemas acabaram - TDC - PHPeste

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

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

!=Por uma vida mais saudável

O que é o xdebug?

Page 5: Xdebug   seus problemas acabaram - TDC - PHPeste

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

Porque usar xdebug?Debugando sem xdebug

Page 7: Xdebug   seus problemas acabaram - TDC - PHPeste

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

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

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

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

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

Instalação - PECL~$ sudo pecl install xdebug

Page 13: Xdebug   seus problemas acabaram - TDC - PHPeste

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

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

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

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

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

Variáveis amigáveis - browserO xdebug faz isto...

Page 19: Xdebug   seus problemas acabaram - TDC - PHPeste

Variáveis amigáveis - browser

Page 20: Xdebug   seus problemas acabaram - TDC - PHPeste

Variáveis amigáveis - browserVirar isto!

Page 21: Xdebug   seus problemas acabaram - TDC - PHPeste

Variáveis amigáveis - browserE ainda pode melhorar!

Page 22: Xdebug   seus problemas acabaram - TDC - PHPeste

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

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

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

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

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

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

Xdebug no Eclipse

Page 29: Xdebug   seus problemas acabaram - TDC - PHPeste

Xdebug no Eclipse

1

Page 30: Xdebug   seus problemas acabaram - TDC - PHPeste

Xdebug no Eclipse

2

13

4

Page 31: Xdebug   seus problemas acabaram - TDC - PHPeste

Xdebug no Eclipse

3

2

1

Page 32: Xdebug   seus problemas acabaram - TDC - PHPeste

Xdebug no Eclipse

1

2

3

4

5

Page 33: Xdebug   seus problemas acabaram - TDC - PHPeste

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

Ações ao debugarSet breakpoint

Step into

Step opver

Step return

Run to cursor

Resume

Terminate

Page 35: Xdebug   seus problemas acabaram - TDC - PHPeste

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

Quero ver ao vivo!

Talk is cheap.

Show me the code.- Linus Torvalds

#ShowMeTheCode

Page 37: Xdebug   seus problemas acabaram - TDC - PHPeste

Coverage./vendor/bin/phpunit --coverage-html coverage

Page 38: Xdebug   seus problemas acabaram - TDC - PHPeste

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

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

Profiling - webgrind

Page 41: Xdebug   seus problemas acabaram - TDC - PHPeste

Profiling - webgrind - gráfico de chamadas

Page 42: Xdebug   seus problemas acabaram - TDC - PHPeste

Profiling - kcachegrind

Page 43: Xdebug   seus problemas acabaram - TDC - PHPeste

[email protected]

linkedin.com/in/vitormattostelegram.me/vitormattos