O documento fornece uma introdução sobre técnicas de depuração no WordPress, incluindo constantes nativas para ativar o modo de depuração, inserção manual de mensagens, ferramentas como What The File, Debug Bar e Query Monitor, e o uso do profiler xdebug.
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)
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