SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
1001
maneiras de
debugar o
WordPress
Rudá Almeida
Imagem: macrovector
Rudá Almeida
Integrante da TI da UFRJ
Entusiasta do WordPress
Palestrante, voluntário e
co-organizador de meetups
O que é debug?
O que é debug?
“Debug (em português, depuração) é o processo de localizar e corrigir erros em
um programa de computador que impeçam a operação do sistema.
Técnicas de debugging podem incluir debug interativo, análise de controle de
fluxo, testes unitários, análise de logs, monitoramento, dumps de memória, e
profiling”.
Wikipédia (adaptado)
Debug é
diagnóstico
Debug é
uma arte
Aviso importante
Não faça
debug em
produção!
Prejuízo para:
● Performance
● Estabilidade
● Segurança
Como ativar o debug
no WordPress
Constantes nativas do WordPress
WP_DEBUG
● Ativa o modo de debug nativo do WordPress.
● Exibe todos os erros, alertas e avisos do PHP.
● Avisa sobre funções e argumentos obsoletas
(“deprecated”) do WordPress.
WP_DEBUG_DISPLAY
● Exibe (ou oculta) erros na tela.
WP_DEBUG_LOG
● Salva erros, alertas, notices e mensagens
personalizadas em um arquivo de log.
define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);
define('WP_DEBUG_LOG', true);
O modo de recuperação
e a proteção contra erros
Proteção contra erros
Modo de recuperação
Modo de recuperação e proteção
contra erros
● Novidade a partir do WordPress 5.2
● Substitui a “tela branca da morte” em (alguns) erros do
PHP.
● Permite login para desativar o componente que esteja
falhando.
● Não interfere no fluxo de debug ou no registro de
entradas no arquivo de log.
● Extensível por desenvolvedores.
Técnicas e ferramentas
de debug
Inserção manual
de mensagens
Imagem: Cosmin Negoita
Inserção manual de mensagens
echo('mensagem');
● Exibe a mensagem.
die('mensagem');
● Exibe a mensagem e interrompe a execução do código.
error_log('mensagem');
error_log(print_r($array, true));
error_log(print_r($objeto, true));
● Insere uma entrada no arquivo de log.
What The
File
WordPress Template Hierarchy
What The File
Detecta quais arquivos do
tema (incluindo template-parts)
foram usados para renderizar
a página atual e exibe esta
informação em um menu
drop-down na barra de
administração.
Debug Bar
Debug Bar
Oferece informações sobre o ambiente do PHP, a
plataforma WordPress, e a página exibida.
● Extensível através de plugins.
● Desenvolvido por uma equipe de
contribuidores do core WordPress.
Pontos fracos:
● Não é atualizado há mais de um ano.
● Oferece poucas informações básicas
caso seja utilizado sem outros plugins.
● Necessário alteração no wp-config:
define('SAVEQUERIES', true);
Por padrão, informa a versão do PHP
e MySQL, uso de RAM, consultas
SQL, WP Query e objeto retornado,
request, query string e rewrite rule
utilizada.
Através de plugins, abrange também
shortcodes, constantes, post types,
ações e filtros, transients, WP cron,
dependências de CSS e JS,
requisições remotas, performance de
actions e filters, e muito mais.
Query
Monitor
Query Monitor
Painel de desenvolvimento para
WordPress extremamente versátil,
mostra informações detalhadas de
consultas ao banco, erros de PHP,
hooks e actions, requests, variáveis de
query, uso de arquivos do tema e
template parts, e muito mais.
● Ativação automática sem uso
de constante no arquivo
wp-config.
● Dezenas de opções padrão.
● Extensível através de plugins.
● Compatível com add-ons do
Debug Bar.
xdebug
xdebug
● Debug interativo passo-a-passo
○ Examina estrutura de dados, valores de variáveis, retorno de
funções e fluxo de execução do código.
○ Usado em conjunto com uma IDE que ofereça suporte (VS Code,
Sublime, NetBeans, Eclipse…)
● Adiciona rastreamento de pilha (stack tracing) a erros,
exceções, alertas e notices do PHP.
● Profiling
○ Analisa recursos utilizados por cada chamada a uma função,
ajudando a localizar gargalos de performance e visualizar a
execução do código.
xdebug profiling
xdebug profiling
Blackfire
Blackfire
Profiler
● Analisa detalhadamente o consumo de recursos: tempo
de execução, uso de CPU, RAM, I/O (disco), rede,
chamadas HTTP e consultas SQL.
● Indica funções mais “custosas” em cada métrica.
● Gera gráficos detalhados.
● Cloud-based, “as-a-service”.
● Pago (possui planos gratuitos).
Blackfire
Para saber mais
● Debugging in WordPress
● Fatal Error Recovery Mode in WordPress 5.2
● Query Monitor – The Developer Tools Panel for
WordPress
● Query Monitor – Depurar o WordPress e Melhorar o
Desempenho do Website
● xdebug documentation
Perguntas?
Obrigado!
rdlmda.me
tg.me/rdlmda
fb.com/rdlmda

Mais conteúdo relacionado

Mais procurados

Zabbix, Grafana e os conteineres Docker
Zabbix, Grafana e os conteineres DockerZabbix, Grafana e os conteineres Docker
Zabbix, Grafana e os conteineres DockerAécio Pires
 
PHP de alta performance com RoadRunner
PHP de alta performance com RoadRunnerPHP de alta performance com RoadRunner
PHP de alta performance com RoadRunnerLeonardo Tumadjian
 
Entendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPAdler Medrado
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)Renato Groff
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot frameworkClaudenir Freitas
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyRelsi Maron
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVinícius Krolow
 
DUnitX - Novo Framework de Testes unitários para Delphi
DUnitX - Novo Framework de Testes unitários para DelphiDUnitX - Novo Framework de Testes unitários para Delphi
DUnitX - Novo Framework de Testes unitários para DelphiRenan Frutuozo
 
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Bernardo Fontes
 
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosResolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosAndreano Lanusse
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPTSidney Souza
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de djangorosenclever
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeterEdlaine Zamora
 

Mais procurados (19)

Bdd com spec flow
Bdd com spec flowBdd com spec flow
Bdd com spec flow
 
Zabbix, Grafana e os conteineres Docker
Zabbix, Grafana e os conteineres DockerZabbix, Grafana e os conteineres Docker
Zabbix, Grafana e os conteineres Docker
 
PHP de alta performance com RoadRunner
PHP de alta performance com RoadRunnerPHP de alta performance com RoadRunner
PHP de alta performance com RoadRunner
 
Entendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHP
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot framework
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
Introdução ao Maven
Introdução ao MavenIntrodução ao Maven
Introdução ao Maven
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
DUnitX - Novo Framework de Testes unitários para Delphi
DUnitX - Novo Framework de Testes unitários para DelphiDUnitX - Novo Framework de Testes unitários para Delphi
DUnitX - Novo Framework de Testes unitários para Delphi
 
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?
 
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosResolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
 
BDD: Cucumber + Selenium + Java
BDD: Cucumber + Selenium + JavaBDD: Cucumber + Selenium + Java
BDD: Cucumber + Selenium + Java
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPT
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de django
 
J Meter
J MeterJ Meter
J Meter
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeter
 

Semelhante a 1001 maneiras de debugar o WordPress

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 2017Vitor Mattos
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkFlávio Lisboa
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
Xdebug seus problemas acabaram - TDC - PHPeste
Xdebug   seus problemas acabaram - TDC - PHPesteXdebug   seus problemas acabaram - TDC - PHPeste
Xdebug seus problemas acabaram - TDC - PHPesteVitor Mattos
 
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!tdc-globalcode
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoEmbarcados
 
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoFlávio Lisboa
 
Teste cabra da peste
Teste cabra da pesteTeste cabra da peste
Teste cabra da pesteMichele Silva
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a Rômulo Jales
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Gerenciando aspectos e eventos com Zend Framework 2
Gerenciando aspectos e eventos com Zend Framework 2Gerenciando aspectos e eventos com Zend Framework 2
Gerenciando aspectos e eventos com Zend Framework 2Flávio Lisboa
 
Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Gabriel Machado
 

Semelhante a 1001 maneiras de debugar o WordPress (20)

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
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Xdebug seus problemas acabaram - TDC - PHPeste
Xdebug   seus problemas acabaram - TDC - PHPesteXdebug   seus problemas acabaram - TDC - PHPeste
Xdebug seus problemas acabaram - TDC - PHPeste
 
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcado
 
Depurando Aplicacoes PHP
Depurando Aplicacoes PHPDepurando Aplicacoes PHP
Depurando Aplicacoes PHP
 
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutenção
 
Django
DjangoDjango
Django
 
Teste cabra da peste
Teste cabra da pesteTeste cabra da peste
Teste cabra da peste
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
Ap 04 05_10
Ap 04 05_10Ap 04 05_10
Ap 04 05_10
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Gerenciando aspectos e eventos com Zend Framework 2
Gerenciando aspectos e eventos com Zend Framework 2Gerenciando aspectos e eventos com Zend Framework 2
Gerenciando aspectos e eventos com Zend Framework 2
 
Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 

1001 maneiras de debugar o WordPress

  • 1. 1001 maneiras de debugar o WordPress Rudá Almeida Imagem: macrovector
  • 2. Rudá Almeida Integrante da TI da UFRJ Entusiasta do WordPress Palestrante, voluntário e co-organizador de meetups
  • 3. O que é debug?
  • 4. O que é debug? “Debug (em português, depuração) é o processo de localizar e corrigir erros em um programa de computador que impeçam a operação do sistema. Técnicas de debugging podem incluir debug interativo, análise de controle de fluxo, testes unitários, análise de logs, monitoramento, dumps de memória, e profiling”. Wikipédia (adaptado)
  • 7. Aviso importante Não faça debug em produção! Prejuízo para: ● Performance ● Estabilidade ● Segurança
  • 8. Como ativar o debug no WordPress
  • 9. Constantes nativas do WordPress WP_DEBUG ● Ativa o modo de debug nativo do WordPress. ● Exibe todos os erros, alertas e avisos do PHP. ● Avisa sobre funções e argumentos obsoletas (“deprecated”) do WordPress. WP_DEBUG_DISPLAY ● Exibe (ou oculta) erros na tela. WP_DEBUG_LOG ● Salva erros, alertas, notices e mensagens personalizadas em um arquivo de log. define('WP_DEBUG', true); define('WP_DEBUG_DISPLAY', false); @ini_set('display_errors', 0); define('WP_DEBUG_LOG', true);
  • 10. O modo de recuperação e a proteção contra erros
  • 13. Modo de recuperação e proteção contra erros ● Novidade a partir do WordPress 5.2 ● Substitui a “tela branca da morte” em (alguns) erros do PHP. ● Permite login para desativar o componente que esteja falhando. ● Não interfere no fluxo de debug ou no registro de entradas no arquivo de log. ● Extensível por desenvolvedores.
  • 16. Inserção manual de mensagens echo('mensagem'); ● Exibe a mensagem. die('mensagem'); ● Exibe a mensagem e interrompe a execução do código. error_log('mensagem'); error_log(print_r($array, true)); error_log(print_r($objeto, true)); ● Insere uma entrada no arquivo de log.
  • 19. What The File Detecta quais arquivos do tema (incluindo template-parts) foram usados para renderizar a página atual e exibe esta informação em um menu drop-down na barra de administração.
  • 21. Debug Bar Oferece informações sobre o ambiente do PHP, a plataforma WordPress, e a página exibida. ● Extensível através de plugins. ● Desenvolvido por uma equipe de contribuidores do core WordPress. Pontos fracos: ● Não é atualizado há mais de um ano. ● Oferece poucas informações básicas caso seja utilizado sem outros plugins. ● Necessário alteração no wp-config: define('SAVEQUERIES', true); Por padrão, informa a versão do PHP e MySQL, uso de RAM, consultas SQL, WP Query e objeto retornado, request, query string e rewrite rule utilizada. Através de plugins, abrange também shortcodes, constantes, post types, ações e filtros, transients, WP cron, dependências de CSS e JS, requisições remotas, performance de actions e filters, e muito mais.
  • 23. Query Monitor Painel de desenvolvimento para WordPress extremamente versátil, mostra informações detalhadas de consultas ao banco, erros de PHP, hooks e actions, requests, variáveis de query, uso de arquivos do tema e template parts, e muito mais. ● Ativação automática sem uso de constante no arquivo wp-config. ● Dezenas de opções padrão. ● Extensível através de plugins. ● Compatível com add-ons do Debug Bar.
  • 25. xdebug ● Debug interativo passo-a-passo ○ Examina estrutura de dados, valores de variáveis, retorno de funções e fluxo de execução do código. ○ Usado em conjunto com uma IDE que ofereça suporte (VS Code, Sublime, NetBeans, Eclipse…) ● Adiciona rastreamento de pilha (stack tracing) a erros, exceções, alertas e notices do PHP. ● Profiling ○ Analisa recursos utilizados por cada chamada a uma função, ajudando a localizar gargalos de performance e visualizar a execução do código.
  • 29. Blackfire Profiler ● Analisa detalhadamente o consumo de recursos: tempo de execução, uso de CPU, RAM, I/O (disco), rede, chamadas HTTP e consultas SQL. ● Indica funções mais “custosas” em cada métrica. ● Gera gráficos detalhados. ● Cloud-based, “as-a-service”. ● Pago (possui planos gratuitos).
  • 31. Para saber mais ● Debugging in WordPress ● Fatal Error Recovery Mode in WordPress 5.2 ● Query Monitor – The Developer Tools Panel for WordPress ● Query Monitor – Depurar o WordPress e Melhorar o Desempenho do Website ● xdebug documentation