depurando aplicações php com xdebug e firephp - seti 2008

28
Depurando Aplicações PHP com Xdebug e FirePHP Jefferson Girão http://jefferson.eti.br [email protected]

Upload: jefferson-girao

Post on 21-Jan-2015

1.624 views

Category:

Technology


2 download

DESCRIPTION

Apresentação feita durante a Semana de Tecnologia da Informação da Faculdade de Juazeiro do Norte. Dia 04/12/08

TRANSCRIPT

Page 1: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Depurando Aplicações PHPcom Xdebug e FirePHP

Jefferson Girãohttp://[email protected]

Page 2: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Murphy, o culpado de tudo.

Coronel John Paul Stapp

Page 3: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

As Leis

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

Se tudo parece estar indo bem, é porque você não 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 são aceitos como uma triste realidade. Esperamos eliminá-los todos, um por um, mas nunca conseguiremos nos livrar deles." DeMarco, Tom , Editora Campus, 91

Page 4: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Os Erros

Erros nem sempre são óbvios;

Erros diferentes podem ter a mesma manifestação;

Saber que um programa não esta correto não necessariamente é saber como corrigir o erro.

Page 5: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Bug?

Almirante Grace Hopper

Page 6: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

O que fazer? Depurar, testar!!

“Depois eu escrevo o plano de testes...”

“Vamos deixar os testes para a próxima fase...”

“Na minha máquina funcionou...”

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

Page 7: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

O que entendemos por depuração?

Resolução de problemas (“bugs”):

Erros Sintáticos / de Interpretação

Erros Semânticos

Erros Lógicos

Avisos e Notificações

Problemas de Desempenho

Page 8: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Erros Sintáticos

Erro sintático acontece quando você se expressa de uma forma não válida para o compilador/interpretador.

Quando você não segue a sintaxe da linguagem.

Prof. Girafales após cometer um erro sintático:"Eu jamais me engano. Só me enganei uma vez: quando acreditei estar enganado!"

Page 9: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Exemplo de Erro Sintático

É um erro fatal!!! Bizu

Atenção no destaque de sintaxe da IDE e olhe sempre as linhas anteriores à indicada pela mensagem de erro do PHP.

Page 10: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Cadê os Erros?

No php.ini:display_errors = On

error_reporting = E_ALL

Page 11: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Erros Semânticos

Erros de semântica envolvem códigos técnicamente corretos que contêm problemas com o significado do código.

Pica-pau sobre os erros semânticos"Yo no lo conoço señor"

Page 12: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Exemplo de Erro Semântico

É um erro fatal!!! Bizu

Bizu: verifique se as inclusões foram feitas corretamente e desconfie quando o recurso de autocomplete da IDE não funcionar

Page 13: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Avisos e Notificações

Avisos/Notificações podem ser tratados pelo PHP, mas provavelmente não é sobre algo que você não gostaria no seu código

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

Page 14: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Exemplo de Aviso/Notificação

Bizu

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

Page 15: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Erros Lógicos

Simplesmente seu programa não faz o que deveria fazer.

Chapolim se deparando com um erro lógico:"Pepe, já tirei a vela."

Page 16: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Como vamos resolver?

Ferramentas

Mensagens de erro do PHP

Recursos do Eclipse PDT

Instruções de impressão

Xdebug

Firebug + FirePHP

Page 17: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

O que é o XDebug?

Não é um sanduíche

É uma extensão para PHP

Multiplataforma

Atualmente na versão 2

Criada pelo Derick Rethans (Colaborador chave do PHP)

Com a finalidade de prover informações para depuração e otimização de aplicações

www.xdebug.org

Page 18: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Principais recursos do XDebug

Melhorias nas mensagens de erro do PHP

Melhorias na saída do var_dump()

Proteção contra recursões infinitas

Depuração remota (Debugging)

Acompanhamento do fluxo da aplicação (Tracing)

Informações sobre consumo de recursos (Profilling)

Cobertura de código (Code Coverage)

Page 19: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Instalação do XDebug

Através do código fonte Através de binários Através do repositório PECL

Page 20: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Instalação do XDebug

Configuração 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 Instalação através do phpinfo();

Page 21: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Configurações comuns

• No php.ini

• xdebug.show_local_vars=On •Exibe variáveis locais

• xdebug.dump.GET=* •Mostra o conteúdo da superglobal GET •(funciona para GET, POST, SERVER, COOKIE, ...)

• xdebug.max_nesting_level=4 • Define limite de recursão

Page 22: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Debugging•No php.ini

; debug remotoxdebug.remote_enable=Onxdebug.remote_host="localhost"xdebug.remote_port=9000xdebug.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

Page 23: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Tracing

Comando1

X > 3

Comando4 - Erro

Comando2 Comando3

V F

Page 24: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Tracing•No php.ini

xdebug.auto_trace=Onxdebug.trace_output_dir=D:\Temp

• Fazendo tracing de uma parte específica do código

Page 25: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

ProfillingNo php.inixdebug.profiler_output_dir="D:\Temp"xdebug.profiler_append=Onxdebug.profiler_enable_trigger=On

O KCacheGrind

Page 26: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

FirePHP

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

Permite que Scripts PHP converse com o painel do Firebug

Todos os dados são enviados via response headers sem interferir no conteúdo da página

Ideal para depuração de aplicações AJAX onde respostas JSONe XML simples são necessárias

Page 27: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

FirePHP

Instalação

•O FireBug• O FirePHP• As Bibliotecas

• API Procedural• API Orientada a Objeto

www.firephp.org

Page 28: Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008

Referências

Instalação

•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! Dúvidas?