Upload
jefferson-girao
View
1.626
Download
2
Embed Size (px)
DESCRIPTION
Apresentação feita durante a Semana de Tecnologia da Informação da Faculdade de Juazeiro do Norte. Dia 04/12/08
Citation preview
Depurando Aplicações PHPcom Xdebug e FirePHP
Jefferson Girãohttp://[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ê 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?