tdc2016sp - depurando aplicações php like a boss

Post on 20-Mar-2017

54 Views

Category:

Education

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

DepurandoaplicaçõesPHPlike aBOSS

ThiagoRodriguesEng.deSoftwareSr.CI&T- PHPSP

ThiagoRodrigues

BacharelemSistemasdeInformaçãopelaUniversidadedoEstadodeMinasGerais(UEMG);

Engenheiro deSoftwareSêniornaCI&T

Programador PHPhá11anos;

EvangelistaPHPSP

Entusiastadosoftwarelivre

Gammer

Depuração- Oqueé?

Definiçãoformal:

Depuração (eminglês:debugging,debug)éoprocessodeencontrarereduzirdefeitosnumaplicativodesoftwareoumesmoemhardware.[..]

https://pt.wikipedia.org/wiki/Depuração

• diariamentedespendemos esforçoconsiderável

• éumprocessoanalítico

• éumprocesso repetitivo

• éincremental(dividir paraconquistar)

• podehavermuitapressãoenvolvida

Depuração- Habilidadenecessária

Obomdesenvolvedorécapazdedepurareresolverproblemas com:

• tranquilidade

• efetividade

• produtividade

• clareza

• assertividade

Depuração- domíniodeferramentas

Paraexecutarbemqualquer

trabalhoéfundamental dominar

ferramentasqueauxiliamna

execuçãodomesmo.

Ahabilidadedecriareusar

ferramentasfoieaindaé

fundamentalparaespéciehumana.

QuaisferramentasvocêsusamparadepuraraplicaçõesPHP?

Ferramentasdedepuração- Nãoexistebaladeprata

Diferentesproblemasdemandam ferramentasdiferentes.

Éfundamentalconhecerdiversasferramentas,entenderquandousarecomousar.

Bê-a-bá dadepuraçãodeaplicaçõesPHP

<?php echo 'Hello world!';

Bê-a-bá dadepuraçãodeaplicaçõesPHP

<?php$vetor = array(

'frutas' => array('banana', 'maça', 'laranja'

),'vegetais' => array(

'alface', 'rúcula', 'couve'),

);

echo $vetor;

Bê-a-bá dadepuraçãodeaplicaçõesPHP

<?php$vetor = array(

'frutas' => array('banana', 'maça', 'laranja'

),'vegetais' => array(

'alface', 'rúcula', 'couve'),

);

print_r($vetor);

Bê-a-bá dadepuraçãodeaplicaçõesPHP

<?php$vetor = array(

'frutas' => array('banana', 'maça', 'laranja'

),'vegetais' => array(

'alface', 'rúcula', 'couve'),

);

echo '<pre>';print_r($vetor);

Bê-a-bá dadepuraçãodeaplicaçõesPHP

<?php$vetor = array(

'',NULL,'laranja',123, '123', 1.0,'1.0',

);echo '<pre>';print_r($vetor);

Bê-a-bá dadepuraçãodeaplicaçõesPHP

<?php$vetor = array(

'',NULL,'laranja',123,'123',1.0,'1.0',

);echo '<pre>';var_dump($vetor);

Bê-a-bá dadepuraçãodeaplicaçõesPHP

<?php$vetor = array(

// elementos);ob_start();echo '<pre>';var_dump($vetor);$info = ob_get_clean();file_put_contents('/tmp/debug.html', $info);echo 'Oi ;)';

Problemascomunsdaabordagem"imprimirnatela"

• Esforçorepetitivo

• Nãoexibetodoocontexto devariáveis

• Dificultaoentendimentodeestruturasdedadoscomplexas

• Requeraquebradefuncionalidadeparatestesemprodução

• Vocêpodesedaraesseluxo?Oqueosusuáriosvãopensar?

• Desperdiça-semuitotempotentando identificarfluxoscomplexos imprimindovalores

seguidodafunçãoexit()oudie().

• Devezemquandoalgumdessesecho/print_r/var_dump sãoesquecidos,acarretandona

quebradefuncionalidadesoudolayout.

• Identificaçãodeproblemasdeperformanceéextremamenteonerosa

EnsinofundamentaldadepuraçãodeaplicaçõesPHP

Ajustarphp.ini paraexibirqualquer tipodeerro:

error_reporting = E_ALLdisplay_errors = On # Desligar em PROD.

Verificarlogsdoservidorwebenquantoasrequisiçõesestãoocorrendo (stream):

sudo tail -f /var/log/apache2/error.log [outro/file]

Tiposdedepuração

DebuggingConecta-seaosoftwareecontrolaofluxodeexecuçãodaaplicaçãoeobtémseuestado.

TracingImprimeinformaçõesemmomentoschaves,taiscomoapilhadeexecuçãodaaplicação.

ProfilingColetaemensuradiversosdadosestatísticosdaaplicação,taiscomotempodeexecução,memóriautilizada,quantidadesdechamadas,etc.

Xdebug

Amaispoderosa ferramentadedepuraçãoPHP.

Principaisfuncionalidades:

• Debugging

• Tracing

• Profiling

• Proteçãocontraloopinfinito

• Deixaovar_dump bonito

Xdebug - Instalação

NoLinux:

sudo apt-get install php5-xdebug

NoMac(usandobrew):

sudo brew install php56-xdebug

Xdebug - Tracing

Xdebug - "embeleza"ovar_dump

Xdebug - Configurandodepuraçãoremota

Noservidorweb- xdebug.ini:xdebug.remote_connect_back=1xdebug.remote_enable=1

TúnelSSH(necessáriosomenteparaaplicaçõesremotas)ssh -R 9000:localhost:9000 thiago@site.com

Xdebug - ConfigurandodepuraçãoremotanoPHPStorm

1) AbraajanelaPreferences enavegueatéPHP>Servers.2)PreenchaoName,Host ePorta doservidorPHP.3) Seforumservidorremoto,habilite"Usepathmappings" emapeiearaizdoprojeto localcomocaminhoabsoluto doprojetonoservidorremoto.4) CliqueemOK parasalvarefecharajanela.

Xdebug - ConfigurandodepuraçãoremotanoPHPStorm

1) VáatéomenuRun ecliqueemEdit Configurations.2)Cliquenobotão+ edepoisemPHPWebApplication.3) PreenchaocampoName;nocampoServer selecioneoservidorcriadonoslideanteriorecoloque/ emStartURL.4) CliqueemOK parasalvarefecharajanela.

Xdebug - IniciandoadepuraçãonoPHPStorm

Seadepuraçãoforremota,criarotúnelSSHantes.

1) VáatéomenuRun ecliqueemDebug'nome'.2)Seráabertoumajaneladonavegador.

Xdebug - TeladedepuraçãonoPHPStorm

Xdebug - DepuraçãonoPHPStorm

Xdebug - Configurandoprofiling

xdebug.ini

xdebug.profiler_enable_trigger=1xdebug.profiler_enable=1xdebug.profiler_output_dir="/var/www/phpsp"

Visiteosite,notequeelecriaráalgunsarquivoscachegrind.out napastaespecificada.

NoPHPStorm:AcesseTools>Analyze Xdebug ProfilerSnapshot eselecionealgumarquivocachegrind.out.

Xdebug - Analisandoprofiling noPHPStorm

Xdebug - Analisandoprofiling noKCachegrind

XHProf

Ferramentaparaprofiling.

XHProf - Gráficodechamadas

Webprofiler doframework

Blackfire - outraferramentadeprofiling

Conclusão

Precisachecarumaestruturadedadosbásica? var_dump

Precisainvestigarofluxodeexecução? Xdebug

Precisainvestigarumaestruturadedadoscomplexa? Xdebug

Precisamelhoraraperformancedeumapágina? Utilizeumaferramentadeprofiling

antesdesairatirandoparatodolado.

Invistaseutempoemferramentasdedepuraçãoparaganharprodutividade.

Contato

xthiago@gmail.comxthiago.com

top related