SlideShare uma empresa Scribd logo
Depurando	aplicações	PHP	like a	BOSS
Thiago	Rodrigues
Eng.	de	Software	Sr.
CI&T	- PHPSP
Thiago	Rodrigues
Bacharel	em	Sistemas	de	Informação	pela	Universidade	
do	Estado	de	Minas	Gerais	(UEMG);
Engenheiro	 de	Software	Sênior	na	CI&T
Programador	 PHP	há	11	anos;
Evangelista	PHPSP
Entusiasta	do	software	livre
Gammer
Depuração	- O	que	é?
Definição	formal:
Depuração	(em	inglês:	debugging,	debug)	é	o	processo	de	encontrar	e	reduzir	
defeitos	num	aplicativo	de	software	ou	mesmo	em	hardware.		[..]
https://pt.wikipedia.org/wiki/Depuração
• diariamente	despendemos	 esforço	considerável
• é	um	processo	analítico
• é	um	processo	repetitivo
• é	incremental	(dividir	 para	conquistar)
• pode	haver	muita	pressão	envolvida
Depuração	- Habilidade	necessária
O	bom	desenvolvedoré	capaz	de	depurare	resolver	
problemas com:
• tranquilidade
• efetividade
• produtividade
• clareza
• assertividade
Depuração	- domínio	de	ferramentas
Para	executar	bem	qualquer	
trabalho	é	fundamental	 dominar	
ferramentas	que	auxiliam	na	
execução	do	mesmo.
A	habilidade	de	criar	e	usar	
ferramentas	foi	e	ainda	é	
fundamental	para	espécie	humana.
Quais	ferramentas	vocês	usam	para	depurar	aplicações	PHP?
Ferramentas	de	depuração	- Não	existe	bala	de	prata
Diferentes	problemas demandam	ferramentas	
diferentes.
É	fundamental	conhecerdiversas	ferramentas,	
entender	quando	usare	como	usar.
Bê-a-bá da	depuração	de	aplicações	PHP
<?php echo 'Hello world!';
Bê-a-bá da	depuração	de	aplicações	PHP
<?php
$vetor = array(
'frutas' => array(
'banana', 'maça', 'laranja'
),
'vegetais' => array(
'alface', 'rúcula', 'couve'
),
);
echo $vetor;
Bê-a-bá da	depuração	de	aplicações	PHP
<?php
$vetor = array(
'frutas' => array(
'banana', 'maça', 'laranja'
),
'vegetais' => array(
'alface', 'rúcula', 'couve'
),
);
print_r($vetor);
Bê-a-bá da	depuração	de	aplicações	PHP
<?php
$vetor = array(
'frutas' => array(
'banana', 'maça', 'laranja'
),
'vegetais' => array(
'alface', 'rúcula', 'couve'
),
);
echo '<pre>';
print_r($vetor);
Bê-a-bá da	depuração	de	aplicações	PHP
<?php
$vetor = array(
'',
NULL,
'laranja',
123,
'123',
1.0,
'1.0',
);
echo '<pre>';
print_r($vetor);
Bê-a-bá da	depuração	de	aplicações	PHP
<?php
$vetor = array(
'',
NULL,
'laranja',
123,
'123',
1.0,
'1.0',
);
echo '<pre>';
var_dump($vetor);
Bê-a-bá da	depuração	de	aplicações	PHP
<?php
$vetor = array(
// elementos
);
ob_start();
echo '<pre>';
var_dump($vetor);
$info = ob_get_clean();
file_put_contents('/tmp/debug.html',
$info);
echo 'Oi ;)';
Problemas	comuns	da	abordagem	"imprimir	na	tela"
• Esforço	repetitivo
• Não	exibe	todo	o	contexto	de	variáveis
• Dificulta	o	entendimento	de	estruturas	de	dados	complexas
• Requer	a	quebra	de	funcionalidade	para	testes	em	produção
• Você	pode	se	dar	a	esse	luxo?	O	que	os	usuários	vão	pensar?
• Desperdiça-se	muito	tempo	tentando	identificar	fluxos	complexos	imprimindo	valores	
seguido	da	função	exit()	ou	die().
• De	vez	em	quando	algum	desses	echo/print_r/var_dump são	esquecidos,	acarretando	na	
quebra	de	funcionalidades	ou	do	layout.
• Identificação	de	problemas	de	performance	é	extremamente	onerosa
Ensino	fundamental	da	depuração	de	aplicações	PHP
Ajustar	php.ini para	exibir	qualquer	tipo	de	erro:
error_reporting = E_ALL
display_errors = On # Desligar em PROD.
Verificar	logs	do	servidor	web	enquanto	as	requisições	estão	
ocorrendo	 (stream):
sudo tail -f /var/log/apache2/error.log [outro/file]
Tipos	de	depuração
Debugging
Conecta-se	ao	software	e	controla	o	fluxo	de	execução	da	
aplicação	e	obtém	seu	estado.
Tracing
Imprime	informações	em	momentos	chaves,	tais	como	a	pilha	de	execução	da	
aplicação.
Profiling
Coleta	e	mensura	diversos	dados	estatísticos	da	aplicação,	tais	como	tempo	de	
execução,	memória	utilizada,	quantidades	de	chamadas,	etc.
Xdebug
A	mais	poderosa	ferramenta	de	depuração	PHP.
Principais	funcionalidades:
• Debugging
• Tracing
• Profiling
• Proteção	contra	loop	infinito
• Deixa	o	var_dump bonito
Xdebug - Instalação
No	Linux:
sudo apt-get install php5-xdebug
No	Mac	(usando	brew):
sudo brew install php56-xdebug
Xdebug - Tracing
Xdebug - "embeleza"	o	var_dump
Xdebug - Configurando	depuração	remota
No	servidor	web	- xdebug.ini:
xdebug.remote_connect_back=1
xdebug.remote_enable=1
Túnel	SSH	(necessário	somente	para	aplicações	remotas)
ssh -R 9000:localhost:9000 thiago@site.com
Xdebug - Configurando	depuração	remota	no	PHPStorm
1) Abra	a	janela	Preferences e	navegue	até	PHP	>	Servers.
2)	Preencha	o	Name,	Host e	Porta do	servidor	PHP.
3) Se	for	um	servidor	remoto,	habilite	"Use	path	mappings" e	mapeie	a	
raiz	do	projeto	local	com	o	caminho	absoluto	do	projeto	no	servidor	remoto.
4) Clique	em	OK para	salvar	e	fechar	a	janela.
Xdebug - Configurando	depuração	remota	no	PHPStorm
1) Vá	até	o	menu	Run e	clique	em	Edit Configurations.
2)	Clique	no	botão	+ e	depois	em	PHP	Web	Application.
3) Preencha	o	campo	Name;	no	campo	Server selecione	o	servidor	
criado	no	slide	anterior	e	coloque	/ em	Start	URL.
4) Clique	em	OK para	salvar	e	fechar	a	janela.
Xdebug - Iniciando	a	depuração	no	PHPStorm
Se	a	depuração	for	remota,	criar	o	túnel	SSH	antes.
1) Vá	até	o	menu	Run e	clique	em	Debug	'nome'.
2)	Será	aberto	uma	janela	do	navegador.
Xdebug - Tela	de	depuração	no	PHPStorm
Xdebug - Depuração	no	PHPStorm
Xdebug - Configurando	profiling
xdebug.ini
xdebug.profiler_enable_trigger=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/var/www/phpsp"
Visite	o	site,	note	que	ele	criará	alguns	arquivos	cachegrind.out na	pasta	
especificada.	
No	PHPStorm:
Acesse	Tools	>	Analyze Xdebug Profiler	Snapshot e	selecione	algum	arquivo	
cachegrind.out.
Xdebug - Analisando	profiling no	PHPStorm
Xdebug - Analisando	profiling no	KCachegrind
XHProf
Ferramenta	para	profiling.
XHProf - Gráfico	de	chamadas
Webprofiler do	framework
Blackfire - outra	ferramenta	de	profiling
Conclusão
Precisa	checar	uma	estrutura	de	dados	básica? var_dump
Precisa	investigar	o	fluxo	de	execução? Xdebug
Precisa	investigar	uma	estrutura	de	dados	complexa? Xdebug
Precisa	melhorar	a	performance	de	uma	página? Utilize	uma	ferramenta	de	profiling
antes	de	sair	atirando	para	todo	lado.
Invista	seu	tempo	em	ferramentas	de	depuração	para	ganhar	produtividade.
Contato
xthiago@gmail.com
xthiago.com

Mais conteúdo relacionado

PDF
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
PDF
Teste de Software em Ti Interna
PDF
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
PPTX
Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software
PDF
Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de ...
PPT
Mitos do Desenvolvimento de Software
PPTX
Qa4 women - Porque qualidade também é coisa de mulher! <3
PPTX
Agilidade em projetos de software
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Teste de Software em Ti Interna
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software
Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de ...
Mitos do Desenvolvimento de Software
Qa4 women - Porque qualidade também é coisa de mulher! <3
Agilidade em projetos de software

Mais procurados (20)

PDF
Introdução à Engenharia de Testes de Software
PDF
A Carreira de Desenvolvedor: do Jr ao Sênior
PDF
PSP - Personal Software Process
PDF
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
PPTX
Fundamentos da Engenharia de Software
PDF
Formação de Equipes de Alto Desempenho para Desenvolvimento de Software: O Pa...
PDF
Engenharia de Software - Unimep/Pronatec - Aula 3
PPTX
Test-Driven Development (TDD): primeiros passos - QA-SP - Julho/2017
PPTX
Test-Driven Development (TDD) - ENTI - Novembro-2017
PDF
Engenharia de Software - Unimep/Pronatec - Aula 4
PDF
[GTS-BA] Desvendando testes de software
PDF
Engenharia de Software - Unimep/Pronatec - Aula 5
PDF
Fisl 16 - Proteja sua aplicação de você mesmo
ODP
XPCE - Qualidade no Código
PPTX
Desenvolvimento de software mundo ideal x mundo real
PPTX
Desenvolvimento de software: Mundo ideal x Mundo real
PPTX
Agilidade é para desenvolvedores? Semana da Agilidade
PPTX
Gerenciamento da Qualidade de Software 4.pptx
PPTX
Cenartec 2014 - Teste de software, uma área, uma carreira, um novo perfil
Introdução à Engenharia de Testes de Software
A Carreira de Desenvolvedor: do Jr ao Sênior
PSP - Personal Software Process
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
Fundamentos da Engenharia de Software
Formação de Equipes de Alto Desempenho para Desenvolvimento de Software: O Pa...
Engenharia de Software - Unimep/Pronatec - Aula 3
Test-Driven Development (TDD): primeiros passos - QA-SP - Julho/2017
Test-Driven Development (TDD) - ENTI - Novembro-2017
Engenharia de Software - Unimep/Pronatec - Aula 4
[GTS-BA] Desvendando testes de software
Engenharia de Software - Unimep/Pronatec - Aula 5
Fisl 16 - Proteja sua aplicação de você mesmo
XPCE - Qualidade no Código
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
Agilidade é para desenvolvedores? Semana da Agilidade
Gerenciamento da Qualidade de Software 4.pptx
Cenartec 2014 - Teste de software, uma área, uma carreira, um novo perfil
Anúncio

Destaque (20)

PDF
132-66-22kV Bus Zone Staging Part 3 - Powerlink
PDF
Informe 05 cen mas órganos electorales descentralizados y mesas de votación
PPTX
The Format of The Research Paper
ODP
Java: o que estudar para o mercado de trabalho
DOCX
Examen.
DOCX
services
DOCX
Fisica y su relacion con otras ciencias
ODP
riesgos
PPTX
Cyclicity of unit digit
PPTX
Suggestions and Ideas for DigitalOcean
PDF
Proyecto 54998
PPT
Identität und Lebensführung (Ingrid Paus-Hasebrink)
PDF
Design Thinking @ Insper 2016
PPTX
Sucesso e derrota na Arquitetura Agile
PDF
TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
PPTX
TDC2016SP - Trilha DevOps .Net
PDF
TDC2016SP - Trilha Microservices
PPT
TDC2016SP - Trilha Microservices
PDF
TDC2016SP - Trilha Data Science
132-66-22kV Bus Zone Staging Part 3 - Powerlink
Informe 05 cen mas órganos electorales descentralizados y mesas de votación
The Format of The Research Paper
Java: o que estudar para o mercado de trabalho
Examen.
services
Fisica y su relacion con otras ciencias
riesgos
Cyclicity of unit digit
Suggestions and Ideas for DigitalOcean
Proyecto 54998
Identität und Lebensführung (Ingrid Paus-Hasebrink)
Design Thinking @ Insper 2016
Sucesso e derrota na Arquitetura Agile
TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016SP - Trilha DevOps .Net
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha Data Science
Anúncio

Mais de tdc-globalcode (20)

PDF
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
PDF
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
PDF
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
PDF
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
PDF
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
PDF
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
PDF
TDC2019 Intel Software Day - Inferencia de IA em edge devices
PDF
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
PPT
Trilha .Net - Programacao funcional usando f#
PDF
TDC2018SP | Trilha Go - Case Easylocus
PDF
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
PDF
TDC2018SP | Trilha Go - Clean architecture em Golang
PDF
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
PDF
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
PDF
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
PDF
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
PDF
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
PDF
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
PDF
TDC2018SP | Trilha .Net - .NET funcional com F#
PDF
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - Inferencia de IA em edge devices
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha .Net - Programacao funcional usando f#
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core

Último (20)

PPTX
MENDEL - Aula sobre Mendel - Genética EM
PPTX
Ciências da Natureza e suas áreas de desenvolvimento
PPTX
NR11 - Treinamento Direcao Defensiva - 2023.pptx
PDF
Ebook - Matemática_Ensino_Médio_Saeb_V1.pdf
PDF
50 anos Hoje - Volume V - 1973 - Manaus Amazonas
PDF
saeb_documentos_de_referencia_versao_1.0.pdf
PDF
Organizador Curricular da Educação em Tempo Integral.pdf
PDF
ESPELHOS DA ALMA A PSICOLOGIA POR TRÁS DOS CONTOS DE FADAS.pdf
PDF
O retorno a origem (islã Islamismo)
PPTX
Pedagogia em Ambientes Não Escolares.pptx
PPTX
Slide_Macronutrientes e Antinutrientes da Dieta Humana.pptx
PPTX
Biologia celular: citologia, é o estudo da célula, a unidade básica da vida.
PPTX
Slides Lição 7, CPAD, Uma Igreja Que Não Teme A Perseguição, 3Tr25.pptx
PDF
GESTÃO DA FASE PRÉ-ANALÍTICA- Recomendações da SBPC-ML (3).pdf
PPTX
Realismo e Naturalismo: Aluísio Azevedo.
PDF
A relação entre funções executivas e desempenho acadêmico em crianças com Tra...
PDF
FLUXOGRAMA CLASSE lll - Acesso estritamente proximal.pdf
PDF
Uma Introdução às Ciências do Alcorão (Islam)
PPTX
HISTÓRIA DO BRASIL - anos de Democracia.pptx
PPT
Imperio Bbrasileiro-1822-1889 - aspectos gerais
MENDEL - Aula sobre Mendel - Genética EM
Ciências da Natureza e suas áreas de desenvolvimento
NR11 - Treinamento Direcao Defensiva - 2023.pptx
Ebook - Matemática_Ensino_Médio_Saeb_V1.pdf
50 anos Hoje - Volume V - 1973 - Manaus Amazonas
saeb_documentos_de_referencia_versao_1.0.pdf
Organizador Curricular da Educação em Tempo Integral.pdf
ESPELHOS DA ALMA A PSICOLOGIA POR TRÁS DOS CONTOS DE FADAS.pdf
O retorno a origem (islã Islamismo)
Pedagogia em Ambientes Não Escolares.pptx
Slide_Macronutrientes e Antinutrientes da Dieta Humana.pptx
Biologia celular: citologia, é o estudo da célula, a unidade básica da vida.
Slides Lição 7, CPAD, Uma Igreja Que Não Teme A Perseguição, 3Tr25.pptx
GESTÃO DA FASE PRÉ-ANALÍTICA- Recomendações da SBPC-ML (3).pdf
Realismo e Naturalismo: Aluísio Azevedo.
A relação entre funções executivas e desempenho acadêmico em crianças com Tra...
FLUXOGRAMA CLASSE lll - Acesso estritamente proximal.pdf
Uma Introdução às Ciências do Alcorão (Islam)
HISTÓRIA DO BRASIL - anos de Democracia.pptx
Imperio Bbrasileiro-1822-1889 - aspectos gerais

TDC2016SP - Depurando Aplicações PHP Like a BOSS