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

Post on 21-Jan-2015

1.624 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Depurando Aplicações PHPcom Xdebug e FirePHP

Jefferson Girãohttp://jefferson.eti.brcontato@jefferson.eti.br

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ê 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

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.

Bug?

Almirante Grace Hopper

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...”

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

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!"

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.

Cadê os Erros?

No php.ini:display_errors = On

error_reporting = E_ALL

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"

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

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?"

Exemplo de Aviso/Notificação

Bizu

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

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."

Como vamos resolver?

Ferramentas

Mensagens de erro do PHP

Recursos do Eclipse PDT

Instruções de impressão

Xdebug

Firebug + FirePHP

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

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)

Instalação do XDebug

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

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();

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

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

Tracing

Comando1

X > 3

Comando4 - Erro

Comando2 Comando3

V F

Tracing•No php.ini

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

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

ProfillingNo php.inixdebug.profiler_output_dir="D:\Temp"xdebug.profiler_append=Onxdebug.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 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

FirePHP

Instalação

•O FireBug• O FirePHP• As Bibliotecas

• API Procedural• API Orientada a Objeto

www.firephp.org

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?

top related