depurando aplicacoes php com xdebug e firephp ii

Download Depurando Aplicacoes PHP com XDebug e FirePHP II

If you can't read please download the document

Upload: jefferson-girao

Post on 16-Apr-2017

5.261 views

Category:

Technology


0 download

TRANSCRIPT

Depurando Aplicaes PHP
com Xdebug e FirePHP

Jefferson Girohttp://[email protected]

Murphy, o culpado de tudo.

Coronel John Paul Stapp

As Leis

Primeira lei - Se uma coisa pode sair errado, sair.

Se tudo parece estar indo bem, porque voc no olhou direito.

A natureza sempre est a favor da falha oculta.

" de conhecimento geral entre os analistas de software que nunca se elimina o ltimo bug de um programa. Os bugs so aceitos como uma triste realidade. Esperamos elimin-los todos, um por um, mas nunca conseguiremos nos livrar deles." DeMarco, Tom , Editora Campus, 91

Os Erros

Erros nem sempre so bvios;

Erros diferentes podem ter a mesma manifestao;

Saber que um programa no esta correto no necessariamente saber como corrigir o erro.

Bug?

Almirante Grace Hopper

O que fazer? Depurar, testar!!

Depois eu escrevo o plano de testes...

Vamos deixar os testes para a prxima fase...

Na minha mquina funcionou...

Temos que entregar o produto na semana que vem...

O que entendemos por depurao?

Resoluo de problemas (bugs):

Erros Sintticos / de Interpretao

Erros Semnticos

Erros Lgicos

Avisos e Notificaes

Problemas de Desempenho

Erros Sintticos

Erro sinttico acontece quando voc se expressa de uma forma no vlida para o compilador/interpretador.

Quando voc no segue a sintaxe da linguagem.

Prof. Girafales aps cometer um erro sinttico:"Eu jamais me engano. S me enganei uma vez: quando acreditei estar enganado!"

Exemplo de Erro Sinttico

um erro fatal!!!

Bizu

Ateno no destaque de sintaxe da IDE e olhe sempre as linhas anteriores indicada pela mensagem de erro do PHP.

Cad os Erros?

No php.ini:display_errors = On error_reporting = E_ALL

Erros Semnticos

Erros de semntica envolvem cdigos tcnicamente corretos que contm problemas com o significado do cdigo.

Pica-pau sobre os erros semnticos"Yo no lo conoo seor"

Exemplo de Erro Semntico

um erro fatal!!!

Bizu

Bizu: verifique se as incluses foram feitas corretamente e desconfie quando o recurso de autocomplete da IDE no funcionar

Avisos e Notificaes

Avisos/Notificaes podem ser tratados pelo PHP, mas provavelmente no sobre algo que voc no gostaria no seu cdigo

Dirty Harry avisando com sua magnum:"Do you feel lucky, punk?"

Exemplo de Aviso/Notificao

Bizu

Configure o PHP para exibir tudo no php.ini:error_reporting = E_ALL;

Erros Lgicos

Simplesmente seu programa no faz o que deveria fazer.

Chapolim se deparando com um erro lgico:"Pepe, j tirei a vela."

Como vamos resolver?

Ferramentas

Mensagens de erro do PHP

Recursos do Eclipse PDT

Instrues de impresso

Xdebug

Firebug + FirePHP

O que o XDebug?

No um sanduche

uma extenso para PHP

Multiplataforma

Atualmente na verso 2

Criada pelo Derick Rethans (Colaborador chave do PHP)

Com a finalidade de prover informaes para depurao

e otimizao de aplicaes

www.xdebug.org

Principais recursos do XDebug

Melhorias nas mensagens de erro do PHP

Melhorias na sada do var_dump()

Proteo contra recurses infinitas

Depurao remota (Debugging)

Acompanhamento do fluxo da aplicao (Tracing)

Informaes sobre consumo de recursos (Profilling)

Cobertura de cdigo (Code Coverage)

Instalao do XDebug

Atravs do cdigo fonte

Atravs de binrios

Atravs do repositrio PECL

Instalao do XDebug

Configurao do PHP.INI

No Windows:

zend_extension_ts="C:\Diretorio\de\extensoes\do\PHP\php_xdebug.dll"

No Linux:

zend_extension="/diretorio/de/extensoes/do/PHP/xdebug.so"

Verificando a Instalao atravs do phpinfo();

Configuraes comuns

No php.ini

xdebug.show_local_vars=On

Exibe variveis locais

xdebug.dump.GET=*

Mostra o contedo da superglobal GET

(funciona para GET, POST, SERVER, COOKIE, ...)

xdebug.max_nesting_level=4

Define limite de recurso

Debugging

No php.ini

; debug remoto

xdebug.remote_enable=On

xdebug.remote_host="localhost"

xdebug.remote_port=9000

xdebug.remote_handler="dbgp"

No Eclipse PDT

run->open debug dialog...->PHP Web Page->New

Defina o Server Debugger para Xdebug

Escolha um arquivo por onde iniciar o debug

Verifique se a URL autogerada est correta

Apply->Debug

Tracing

Comando1X > 3Comando4 - Erro

Comando2Comando3

V

F

Tracing

No php.ini

xdebug.auto_trace=On

xdebug.trace_output_dir=D:\Temp

Fazendo tracing de uma parte especfica do cdigo

Profilling

No php.ini

xdebug.profiler_output_dir="D:\Temp"

xdebug.profiler_append=On

xdebug.profiler_enable_trigger=On

O KCacheGrind

FirePHP

um plugin para um plugin (d) do Firefox chamado Firebug

Permite que Scripts PHP converse com o painel do Firebug

Todos os dados so enviados via response headers sem

interferir no contedo da pgina

Ideal para depurao de aplicaes AJAX onde respostas JSON

e XML simples so necessrias

FirePHP

Instalao

O FireBug

O FirePHP

As Bibliotecas

API Procedural

API Orientada a Objeto

www.firephp.org

Referncias

Instalao

http://www.xdebug.org/docs/

http://www.firephp.org/HQ/Use.html

http://devzone.zend.com/article/2803-Introducing-xdebug

http://www.onlamp.com/public/php/2004/08/12/DebuggingPHP.htm

http://mikebernat.com/blog/My_PHP_Best_Pratices

Obrigado! Dvidas?