SlideShare uma empresa Scribd logo
Depurando   Aplicações   PHP com   Xdebug   e   FirePHP Jefferson Girão http://jefferson.eti.br [email_address]
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 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 V F Comando1 X > 3 Comando4 - Erro Comando2 Comando3
Tracing No php.ini xdebug.auto_trace=On xdebug.trace_output_dir=D:\Temp Fazendo tracing de uma parte específica do código
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 são enviados via response headers sem  interferir no conteúdo da página Ideal para depuração de aplicações AJAX onde respostas JSON e 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?
Anúncio

Mais conteúdo relacionado

Mais procurados (20)

Etapas da programação
Etapas da programaçãoEtapas da programação
Etapas da programação
Clausia Antoneli
 
Java script
Java scriptJava script
Java script
TrioBlack Trioblack
 
[Curso Java Basico] Aula 58: Autoboxing e Unboxing
[Curso Java Basico] Aula 58: Autoboxing e Unboxing[Curso Java Basico] Aula 58: Autoboxing e Unboxing
[Curso Java Basico] Aula 58: Autoboxing e Unboxing
Loiane Groner
 
O que é programar
O que é programarO que é programar
O que é programar
Clausia Antoneli
 
Programação defensiva
Programação defensivaProgramação defensiva
Programação defensiva
Kayo Rayner
 
Lapidando ruby
Lapidando rubyLapidando ruby
Lapidando ruby
mauricioszabo
 
O basico do Python
O basico do Python O basico do Python
O basico do Python
Nerd4fun
 
Básico sobre Debugging com Java
Básico sobre Debugging com JavaBásico sobre Debugging com Java
Básico sobre Debugging com Java
jesuinoPower
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
Glaucio Scheibel
 
Objects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoObjects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do código
BonoBee
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
Felipe Ribeiro
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação c
Clausia Antoneli
 
Php, por onde começar
Php, por onde começar Php, por onde começar
Php, por onde começar
Juciellen Cabrera
 
Sistemas de Automação I - Revisão
Sistemas de Automação I - RevisãoSistemas de Automação I - Revisão
Sistemas de Automação I - Revisão
Thiago Fortunato
 
Refatoração: Como deixar seu código livre de maus Cheiros
Refatoração: Como deixar seu código livre de maus CheirosRefatoração: Como deixar seu código livre de maus Cheiros
Refatoração: Como deixar seu código livre de maus Cheiros
Pedro Hos
 
02 - Introdução a lógica de programação parte 2 - v1.2
02 - Introdução a lógica de programação parte 2 - v1.202 - Introdução a lógica de programação parte 2 - v1.2
02 - Introdução a lógica de programação parte 2 - v1.2
César Augusto Pessôa
 
Introdução á programação - 1ª parte
Introdução á programação - 1ª parteIntrodução á programação - 1ª parte
Introdução á programação - 1ª parte
Luis Fernandes
 
Qualidade de Código
Qualidade de CódigoQualidade de Código
Qualidade de Código
Victor Queiroga
 
Aula 07
Aula 07Aula 07
Aula 07
Gabriel Vinicios Silva Maganha
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
Edu Queiroz
 
[Curso Java Basico] Aula 58: Autoboxing e Unboxing
[Curso Java Basico] Aula 58: Autoboxing e Unboxing[Curso Java Basico] Aula 58: Autoboxing e Unboxing
[Curso Java Basico] Aula 58: Autoboxing e Unboxing
Loiane Groner
 
Programação defensiva
Programação defensivaProgramação defensiva
Programação defensiva
Kayo Rayner
 
O basico do Python
O basico do Python O basico do Python
O basico do Python
Nerd4fun
 
Básico sobre Debugging com Java
Básico sobre Debugging com JavaBásico sobre Debugging com Java
Básico sobre Debugging com Java
jesuinoPower
 
Objects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoObjects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do código
BonoBee
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
Felipe Ribeiro
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação c
Clausia Antoneli
 
Sistemas de Automação I - Revisão
Sistemas de Automação I - RevisãoSistemas de Automação I - Revisão
Sistemas de Automação I - Revisão
Thiago Fortunato
 
Refatoração: Como deixar seu código livre de maus Cheiros
Refatoração: Como deixar seu código livre de maus CheirosRefatoração: Como deixar seu código livre de maus Cheiros
Refatoração: Como deixar seu código livre de maus Cheiros
Pedro Hos
 
02 - Introdução a lógica de programação parte 2 - v1.2
02 - Introdução a lógica de programação parte 2 - v1.202 - Introdução a lógica de programação parte 2 - v1.2
02 - Introdução a lógica de programação parte 2 - v1.2
César Augusto Pessôa
 
Introdução á programação - 1ª parte
Introdução á programação - 1ª parteIntrodução á programação - 1ª parte
Introdução á programação - 1ª parte
Luis Fernandes
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
Edu Queiroz
 

Destaque (18)

Escritura creativa
Escritura creativaEscritura creativa
Escritura creativa
DianaBaldezari
 
חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014
חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014
חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014
Eli Hurvitz
 
Resume
ResumeResume
Resume
Brian Richard
 
சித்தர்கள் போற்றும் வாலை
சித்தர்கள் போற்றும் வாலை சித்தர்கள் போற்றும் வாலை
சித்தர்கள் போற்றும் வாலை
Thanga Jothi Gnana sabai
 
Suzuki adferdin god_uppskrift
Suzuki adferdin  god_uppskriftSuzuki adferdin  god_uppskrift
Suzuki adferdin god_uppskrift
Kristinn Örn Kristinsson
 
Open il vol4
Open il vol4Open il vol4
Open il vol4
榎本 優樹
 
Lucy redes sociales myspace
Lucy redes sociales myspaceLucy redes sociales myspace
Lucy redes sociales myspace
Lucy Stella Gacha Baquero
 
Plan clases ingles orinson valenciano
Plan clases ingles orinson valencianoPlan clases ingles orinson valenciano
Plan clases ingles orinson valenciano
orinsonvalenciano11c
 
Nettet som en del av mediemiksen - Google Think 2014 - Espen Grimmert
Nettet som en del av mediemiksen - Google Think 2014  - Espen GrimmertNettet som en del av mediemiksen - Google Think 2014  - Espen Grimmert
Nettet som en del av mediemiksen - Google Think 2014 - Espen Grimmert
Espen Grimmert
 
Privacy-Aware Data Management in Information Networks - SIGMOD 2011 Tutorial
Privacy-Aware Data Management in Information Networks - SIGMOD 2011 TutorialPrivacy-Aware Data Management in Information Networks - SIGMOD 2011 Tutorial
Privacy-Aware Data Management in Information Networks - SIGMOD 2011 Tutorial
Kun Liu
 
Presentación de Servicios Prevengest
Presentación de Servicios PrevengestPresentación de Servicios Prevengest
Presentación de Servicios Prevengest
Xavier Fillol de Blas
 
The Virtual Strike: on pitches in advertising
The Virtual Strike: on pitches in advertisingThe Virtual Strike: on pitches in advertising
The Virtual Strike: on pitches in advertising
Zigurds Zakis
 
Predavanje OpenIT 2011 - Beograd
Predavanje OpenIT 2011 - BeogradPredavanje OpenIT 2011 - Beograd
Predavanje OpenIT 2011 - Beograd
Ivan Rečević
 
Unit 2: NUTRITION
Unit 2: NUTRITIONUnit 2: NUTRITION
Unit 2: NUTRITION
alfonsodios
 
Govt
GovtGovt
Govt
aditya sharma
 
Turkey is a New Kind Of Silicon Valley
Turkey is a New Kind Of Silicon ValleyTurkey is a New Kind Of Silicon Valley
Turkey is a New Kind Of Silicon Valley
Zafer Elcik
 
Tautas ataudzes mērķi NAP2020 un to sasniegšanas gaita
Tautas ataudzes mērķi NAP2020 un to sasniegšanas gaitaTautas ataudzes mērķi NAP2020 un to sasniegšanas gaita
Tautas ataudzes mērķi NAP2020 un to sasniegšanas gaita
Pārresoru kordinācijas centrs (PKC)
 
Martin Nerstad - VG
Martin Nerstad - VGMartin Nerstad - VG
Martin Nerstad - VG
Mobile Oslo
 
חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014
חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014
חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014
Eli Hurvitz
 
சித்தர்கள் போற்றும் வாலை
சித்தர்கள் போற்றும் வாலை சித்தர்கள் போற்றும் வாலை
சித்தர்கள் போற்றும் வாலை
Thanga Jothi Gnana sabai
 
Plan clases ingles orinson valenciano
Plan clases ingles orinson valencianoPlan clases ingles orinson valenciano
Plan clases ingles orinson valenciano
orinsonvalenciano11c
 
Nettet som en del av mediemiksen - Google Think 2014 - Espen Grimmert
Nettet som en del av mediemiksen - Google Think 2014  - Espen GrimmertNettet som en del av mediemiksen - Google Think 2014  - Espen Grimmert
Nettet som en del av mediemiksen - Google Think 2014 - Espen Grimmert
Espen Grimmert
 
Privacy-Aware Data Management in Information Networks - SIGMOD 2011 Tutorial
Privacy-Aware Data Management in Information Networks - SIGMOD 2011 TutorialPrivacy-Aware Data Management in Information Networks - SIGMOD 2011 Tutorial
Privacy-Aware Data Management in Information Networks - SIGMOD 2011 Tutorial
Kun Liu
 
Presentación de Servicios Prevengest
Presentación de Servicios PrevengestPresentación de Servicios Prevengest
Presentación de Servicios Prevengest
Xavier Fillol de Blas
 
The Virtual Strike: on pitches in advertising
The Virtual Strike: on pitches in advertisingThe Virtual Strike: on pitches in advertising
The Virtual Strike: on pitches in advertising
Zigurds Zakis
 
Predavanje OpenIT 2011 - Beograd
Predavanje OpenIT 2011 - BeogradPredavanje OpenIT 2011 - Beograd
Predavanje OpenIT 2011 - Beograd
Ivan Rečević
 
Unit 2: NUTRITION
Unit 2: NUTRITIONUnit 2: NUTRITION
Unit 2: NUTRITION
alfonsodios
 
Turkey is a New Kind Of Silicon Valley
Turkey is a New Kind Of Silicon ValleyTurkey is a New Kind Of Silicon Valley
Turkey is a New Kind Of Silicon Valley
Zafer Elcik
 
Martin Nerstad - VG
Martin Nerstad - VGMartin Nerstad - VG
Martin Nerstad - VG
Mobile Oslo
 
Anúncio

Semelhante a Depurando Aplicacoes PHP com XDebug e FirePHP II (20)

POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
Paulino Michelazzo
 
Depurando Aplicacoes PHP
Depurando Aplicacoes PHPDepurando Aplicacoes PHP
Depurando Aplicacoes PHP
Jefferson Girão
 
Invasao_e_Correcao_em_Sites.pdf
Invasao_e_Correcao_em_Sites.pdfInvasao_e_Correcao_em_Sites.pdf
Invasao_e_Correcao_em_Sites.pdf
xererenhosdominaram
 
Invasão e correção em sites
Invasão e correção em sitesInvasão e correção em sites
Invasão e correção em sites
Daskonet Dasko
 
Curso C e C++ - Teoria PDF.pdf
Curso C e C++ - Teoria PDF.pdfCurso C e C++ - Teoria PDF.pdf
Curso C e C++ - Teoria PDF.pdf
JoaoAbadia2
 
PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7
Silvano Oliveira
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
Rodolpho Concurde
 
Guia php
Guia phpGuia php
Guia php
Carlos Antonio Castro Oliveira
 
QUALIDADE DE SOFTWARE - AULA 10 - Gest+úo de Defeitos.pptx
QUALIDADE DE SOFTWARE - AULA 10 - Gest+úo de Defeitos.pptxQUALIDADE DE SOFTWARE - AULA 10 - Gest+úo de Defeitos.pptx
QUALIDADE DE SOFTWARE - AULA 10 - Gest+úo de Defeitos.pptx
AlexandreLisboadaSil
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
Thiago Rodrigues
 
Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!
Gustavo Neves
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
diogoa21
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
Cezar Souza
 
Curso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a AulaCurso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a Aula
Jonata Weber
 
1001 maneiras de debugar o WordPress
1001 maneiras de debugar o WordPress1001 maneiras de debugar o WordPress
1001 maneiras de debugar o WordPress
Rudá Almeida
 
Aula04-JavaScript
Aula04-JavaScriptAula04-JavaScript
Aula04-JavaScript
Jorge Ávila Miranda
 
Debugging node
Debugging nodeDebugging node
Debugging node
Jeniffer Nolasco
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites II
info_cimol
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
Rodrigo Bueno Santa Maria, BS, MBA
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017
Vitor Mattos
 
Invasão e correção em sites
Invasão e correção em sitesInvasão e correção em sites
Invasão e correção em sites
Daskonet Dasko
 
Curso C e C++ - Teoria PDF.pdf
Curso C e C++ - Teoria PDF.pdfCurso C e C++ - Teoria PDF.pdf
Curso C e C++ - Teoria PDF.pdf
JoaoAbadia2
 
PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7
Silvano Oliveira
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
Rodolpho Concurde
 
QUALIDADE DE SOFTWARE - AULA 10 - Gest+úo de Defeitos.pptx
QUALIDADE DE SOFTWARE - AULA 10 - Gest+úo de Defeitos.pptxQUALIDADE DE SOFTWARE - AULA 10 - Gest+úo de Defeitos.pptx
QUALIDADE DE SOFTWARE - AULA 10 - Gest+úo de Defeitos.pptx
AlexandreLisboadaSil
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
Thiago Rodrigues
 
Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!
Gustavo Neves
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
diogoa21
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
Cezar Souza
 
Curso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a AulaCurso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a Aula
Jonata Weber
 
1001 maneiras de debugar o WordPress
1001 maneiras de debugar o WordPress1001 maneiras de debugar o WordPress
1001 maneiras de debugar o WordPress
Rudá Almeida
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites II
info_cimol
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017
Vitor Mattos
 
Anúncio

Último (16)

Venha Aprender Sobre MuleSoft - Dia 11.pptx
Venha Aprender Sobre MuleSoft - Dia 11.pptxVenha Aprender Sobre MuleSoft - Dia 11.pptx
Venha Aprender Sobre MuleSoft - Dia 11.pptx
Renato de Oliveira
 
AutoriaDigital.pdf ensino médio e fundamental
AutoriaDigital.pdf ensino médio e fundamentalAutoriaDigital.pdf ensino médio e fundamental
AutoriaDigital.pdf ensino médio e fundamental
DayaneSoares55
 
Venha Aprender Sobre MuleSoft - Dia 10.pptx
Venha Aprender Sobre MuleSoft - Dia 10.pptxVenha Aprender Sobre MuleSoft - Dia 10.pptx
Venha Aprender Sobre MuleSoft - Dia 10.pptx
Renato de Oliveira
 
Slide - Linguagem de Definição de Dados - TLBADII.pdf
Slide - Linguagem de Definição de Dados - TLBADII.pdfSlide - Linguagem de Definição de Dados - TLBADII.pdf
Slide - Linguagem de Definição de Dados - TLBADII.pdf
FtGames1
 
Venha Apender Sobre MuleSoft - Dia 09.pptx
Venha Apender Sobre MuleSoft - Dia 09.pptxVenha Apender Sobre MuleSoft - Dia 09.pptx
Venha Apender Sobre MuleSoft - Dia 09.pptx
Renato de Oliveira
 
03-poo1-uml.pdf Apresentacao UML POOL UML
03-poo1-uml.pdf Apresentacao UML POOL UML03-poo1-uml.pdf Apresentacao UML POOL UML
03-poo1-uml.pdf Apresentacao UML POOL UML
ssuser426fcf
 
Manual Segurança_Internet_CD_B2_D.ppt____
Manual Segurança_Internet_CD_B2_D.ppt____Manual Segurança_Internet_CD_B2_D.ppt____
Manual Segurança_Internet_CD_B2_D.ppt____
IEFP
 
Apres-Hidraulica e seus componentes: válvulas, etc...
Apres-Hidraulica e seus componentes: válvulas, etc...Apres-Hidraulica e seus componentes: válvulas, etc...
Apres-Hidraulica e seus componentes: válvulas, etc...
portodesantacruz80
 
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdfA-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
MarioAthayde
 
Ficha 5.docx____________________________
Ficha 5.docx____________________________Ficha 5.docx____________________________
Ficha 5.docx____________________________
IEFP
 
Venha Aprender Sobre MuleSoft - Dia 07.pptx
Venha Aprender Sobre MuleSoft - Dia 07.pptxVenha Aprender Sobre MuleSoft - Dia 07.pptx
Venha Aprender Sobre MuleSoft - Dia 07.pptx
Renato de Oliveira
 
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptxAC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
Susana Cascais
 
Tabelas e Planilhas com apresentação em Dashboard
Tabelas e Planilhas com apresentação em DashboardTabelas e Planilhas com apresentação em Dashboard
Tabelas e Planilhas com apresentação em Dashboard
Hugo Dourado Graçano
 
Venha Aprender Sobre MuleSoft - Dia 06.pptx
Venha Aprender Sobre MuleSoft - Dia 06.pptxVenha Aprender Sobre MuleSoft - Dia 06.pptx
Venha Aprender Sobre MuleSoft - Dia 06.pptx
Renato de Oliveira
 
Aula de Python - Modularização e Funções.pptx
Aula de Python - Modularização e Funções.pptxAula de Python - Modularização e Funções.pptx
Aula de Python - Modularização e Funções.pptx
ArturGuia1
 
Introdução a Informática basica conceitos basicos .pptx
Introdução  a Informática basica conceitos basicos .pptxIntrodução  a Informática basica conceitos basicos .pptx
Introdução a Informática basica conceitos basicos .pptx
OrlandoCanchipande1
 
Venha Aprender Sobre MuleSoft - Dia 11.pptx
Venha Aprender Sobre MuleSoft - Dia 11.pptxVenha Aprender Sobre MuleSoft - Dia 11.pptx
Venha Aprender Sobre MuleSoft - Dia 11.pptx
Renato de Oliveira
 
AutoriaDigital.pdf ensino médio e fundamental
AutoriaDigital.pdf ensino médio e fundamentalAutoriaDigital.pdf ensino médio e fundamental
AutoriaDigital.pdf ensino médio e fundamental
DayaneSoares55
 
Venha Aprender Sobre MuleSoft - Dia 10.pptx
Venha Aprender Sobre MuleSoft - Dia 10.pptxVenha Aprender Sobre MuleSoft - Dia 10.pptx
Venha Aprender Sobre MuleSoft - Dia 10.pptx
Renato de Oliveira
 
Slide - Linguagem de Definição de Dados - TLBADII.pdf
Slide - Linguagem de Definição de Dados - TLBADII.pdfSlide - Linguagem de Definição de Dados - TLBADII.pdf
Slide - Linguagem de Definição de Dados - TLBADII.pdf
FtGames1
 
Venha Apender Sobre MuleSoft - Dia 09.pptx
Venha Apender Sobre MuleSoft - Dia 09.pptxVenha Apender Sobre MuleSoft - Dia 09.pptx
Venha Apender Sobre MuleSoft - Dia 09.pptx
Renato de Oliveira
 
03-poo1-uml.pdf Apresentacao UML POOL UML
03-poo1-uml.pdf Apresentacao UML POOL UML03-poo1-uml.pdf Apresentacao UML POOL UML
03-poo1-uml.pdf Apresentacao UML POOL UML
ssuser426fcf
 
Manual Segurança_Internet_CD_B2_D.ppt____
Manual Segurança_Internet_CD_B2_D.ppt____Manual Segurança_Internet_CD_B2_D.ppt____
Manual Segurança_Internet_CD_B2_D.ppt____
IEFP
 
Apres-Hidraulica e seus componentes: válvulas, etc...
Apres-Hidraulica e seus componentes: válvulas, etc...Apres-Hidraulica e seus componentes: válvulas, etc...
Apres-Hidraulica e seus componentes: válvulas, etc...
portodesantacruz80
 
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdfA-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
MarioAthayde
 
Ficha 5.docx____________________________
Ficha 5.docx____________________________Ficha 5.docx____________________________
Ficha 5.docx____________________________
IEFP
 
Venha Aprender Sobre MuleSoft - Dia 07.pptx
Venha Aprender Sobre MuleSoft - Dia 07.pptxVenha Aprender Sobre MuleSoft - Dia 07.pptx
Venha Aprender Sobre MuleSoft - Dia 07.pptx
Renato de Oliveira
 
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptxAC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
Susana Cascais
 
Tabelas e Planilhas com apresentação em Dashboard
Tabelas e Planilhas com apresentação em DashboardTabelas e Planilhas com apresentação em Dashboard
Tabelas e Planilhas com apresentação em Dashboard
Hugo Dourado Graçano
 
Venha Aprender Sobre MuleSoft - Dia 06.pptx
Venha Aprender Sobre MuleSoft - Dia 06.pptxVenha Aprender Sobre MuleSoft - Dia 06.pptx
Venha Aprender Sobre MuleSoft - Dia 06.pptx
Renato de Oliveira
 
Aula de Python - Modularização e Funções.pptx
Aula de Python - Modularização e Funções.pptxAula de Python - Modularização e Funções.pptx
Aula de Python - Modularização e Funções.pptx
ArturGuia1
 
Introdução a Informática basica conceitos basicos .pptx
Introdução  a Informática basica conceitos basicos .pptxIntrodução  a Informática basica conceitos basicos .pptx
Introdução a Informática basica conceitos basicos .pptx
OrlandoCanchipande1
 

Depurando Aplicacoes PHP com XDebug e FirePHP II

  • 1. Depurando Aplicações PHP com Xdebug e FirePHP Jefferson Girão http://jefferson.eti.br [email_address]
  • 2. Murphy, o culpado de tudo. Coronel John Paul Stapp
  • 3. 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
  • 4. 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.
  • 6. 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...”
  • 7. 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
  • 8. 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!"
  • 9. 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.
  • 10. Cadê os Erros? No php.ini: display_errors = On error_reporting = E_ALL
  • 11. 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 "
  • 12. 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
  • 13. 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? "
  • 14. Exemplo de Aviso/Notificação Bizu Configure o PHP para exibir tudo no php.ini: error_reporting = E_ALL;
  • 15. 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. "
  • 16. Como vamos resolver? Ferramentas Mensagens de erro do PHP Recursos do Eclipse PDT Instruções de impressão Xdebug Firebug + FirePHP
  • 17. 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
  • 18. 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)
  • 19. Instalação do XDebug Através do código fonte Através de binários Através do repositório PECL
  • 20. 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();
  • 21. 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
  • 22. 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
  • 23. Tracing V F Comando1 X > 3 Comando4 - Erro Comando2 Comando3
  • 24. Tracing No php.ini xdebug.auto_trace=On xdebug.trace_output_dir=D:\Temp Fazendo tracing de uma parte específica do código
  • 25. Profilling No php.ini xdebug.profiler_output_dir="D:\Temp" xdebug.profiler_append=On xdebug.profiler_enable_trigger=On O KCacheGrind
  • 26. 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 JSON e XML simples são necessárias
  • 27. FirePHP Instalação O FireBug O FirePHP As Bibliotecas API Procedural API Orientada a Objeto www.firephp.org
  • 28. 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?