Eu sou muito novo na criação de plugins e estava tendo dificuldades para depurar.
Eu usei muito eco e é desleixado e feio.
Tenho certeza de que há uma maneira melhor de fazer isso, talvez um IDE com um depurador que eu possa executar o site inteiro incluindo o plug-in?
Vá para wp-config.php e mude define('WP_DEBUG', false);
para define('WP_DEBUG', true);
. Além disso, instale o Plugin de Notificações de Substituição de Logins do Andrew Nacin .
Se você está recebendo erros impressos, então o x-debug é uma extensão brilhante PHP que adiciona backtraces modernos ao PHP.
Se você está tentando descobrir o que está acontecendo onde não há erros, minha abordagem favorita é definir uma função que registre sua saída em um arquivo. Então eu plog ($ variável) e que aparece no arquivo de log que eu possa examinar. Isso é especialmente útil quando você está tentando descobrir o que aconteceu antes do cabeçalho () ser chamado ou outras situações em que não é possível imprimir no STDOUT.
Use xdebug + NetBeans IDE. Quando totalmente configurado - o que é fácil de fazer - você pode definir pontos de interrupção em seu plug-in e observar variáveis nos pontos de interrupção. Eu acho que é a melhor maneira de depurar plugins ou quaisquer aplicativos PHP para esse assunto.
Eu depuro a maneira antiga, error_log()
ing e var_dump
ing. Eu acho que é a maneira mais eficiente para mim, eu tenho um par de funções de wrapper para lidar com diferentes tipos de dados, como error_log
ing arrays e objetos pode ser uma dor. Além disso, usar print_r()
in pode ser difícil de ler quando não está em <pre>
. Eu tenho tj_log()
para log de erros, e tj()
para mostrar a saída (que basicamente mostra qualquer tipo de dados em um mannor apresentável:
function tj( $code ) {
?>
<style>
.tj_debug { Word-wrap: break-Word; white-space: pre; text-align: left; position: relative; background-color: rgba(0, 0, 0, 0.8); font-size: 11px; color: #a1a1a1; margin: 10px; padding: 10px; margin: 0 auto; width: 80%; overflow: auto; -moz-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -webkit-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -moz-border-radius: 5px; -webkit-border-radius: 5px; text-shadow: none; }
</style>
<br /><pre class="tj_debug">
<?php
if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
var_dump( $code );
else :
print_r( $code );
endif;
echo '</pre><br />';
}
function tj_log( $code ) {
if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
$code = var_export( $code, true );
else :
$code = print_r( $code, true );
endif;
error_log( $code );
}
Então eu apenas faço: tj( $current_user );
ou o que for.
Eu escrevi uma pequena classe para fazer um arquivo de log, é muito útil quando você está depurando chamadas ajax.
http://github.com/hunk/Magic-Fields/blob/master/tools/debug.php
Você só precisa fazer algo como:
Debug :: log ("Esta é uma mensagem de depuração");
Quando essa linha é executada, a mensagem será adicionada no arquivo de log e depois disso você pode usar o comando tail (se você estiver usando algum sistema operativo de estilo do unix)
tail -f mylogfile.log
Se você pode passar para esta função uma matriz ou um objeto também.
note você precisa alterar a linha 20 para um caminho onde você deseja salvar seu arquivo de log
Depois de mexer com um número de IDEs, me acomodei no antigo Notepad ++ com um esquema de cores Syntax Highlight ultra-personalizado.
Eu tenho uma macro configurada de tal forma que quando eu aperto Shift-Ctrl-X, o código a seguir obtém a saída onde meu cursor é:
echo "<pre>";
var_dump($);
echo "</pre>";
exit();
É simples, mas eu geralmente posso caçar 90% dos meus bugs com esta macro mais o WP_DEBUG ativado.
Eu uso Aptane IDE no Linux e UltraEdit no Windows, e este também tem um analisador de PHP. Além disso, vejo todas as dicas do xDebug com a constante WP_DEBUG
definida em wp-config.php
.
Veja também meu post sobre este tópico e fique à vontade para comentar e dar feedback sobre suas ferramentas de desenvolvimento.
Não é tão ruim assim: Eclipse Está perto de PhpStorm + livre.
Eu recomendo check out FirePHP . Você pode enviar informações de depuração para os cabeçalhos Firebug sobre HTTP do Firefox, o que geralmente resulta em uma saída de depuração mais limpa.
Existem dois IDEs que posso recomendar e já usei extensivamente: PhpED (somente Windows) e PhpStorm + XDEBUG (Mac, Windows e Linux). Estou no Mac agora, portanto, só posso usar o último.
Ambos eles ROCK! A boa notícia é que o PhpStorm custa US $ 49 até setembro de 2010 e apenas US $ 99 depois disso. Se eu estava no Windows e tive que escolher novamente, não tenho certeza qual eu escolheria.
Francamente, não posso deixar de sentir que qualquer desenvolvedor de plugins que não esteja usando uma dessas duas ferramentas é severamente deficiente, especialmente se elas forem relativamente novas no desenvolvimento de plugins do WordPress.
Outra coisa realmente legal é a classe php "krumo". É implementado em ½ min e oferece uma maneira fácil de depurar todo tipo de variáveis:
Plus ajuda com backtracing, mostra classes carregadas ou arquivos incluídos e tudo sob demanda.
Plus é grátis!
Krumo @sourceforge
Primeiramente, adiciono define('WP_DEBUG', false);
ao arquivo wp-config.php (como a maioria das pessoas já disse) à minha instalação local, que é uma cópia recente de um site de produção relevante (arquivos e dados). Isso torna as coisas rápidas, seguras, separadas, mas reflete bem pelo menos um lugar onde o plugin será realmente usado.
Eu também adiciono o Debug Bar plugin junto com alguns dos add-ons da Barra de Depuração (Transientes, por exemplo) - conforme apropriado para seus plugins.
Eu também uso o add-on do Firebug para o Firefox, que é excelente para ajudar a rastrear problemas de html, css e JavaScript, bem como analisar a estranheza do layout.
Eu codifico usando UltraEdit que eu usei por mais de 15 anos para um monte de codificação (php através de SQL) tanto no trabalho quanto em casa e isso funciona bem para mim, mas talvez não tenha o suficiente para eu avaliar como um IDE para muitas pessoas. Ele tem destaque de sintaxe, conclusão automática e recursos de layout de código e um monte de ferramentas de atalho html e css que podem ajudar a evitar erros de digitação e similares. Principalmente isso traz familiaridade para mim, que é um aspecto importante, muitas vezes esquecido no Rush para o novo. A memória muscular auxilia na repetibilidade mesmo na codificação.
E é claro que eu geralmente tenho alguma página apropriada do códice aberta em outra guia em um exemplar adequado.
Todos estes ajudam de diferentes maneiras para destacar erros de codificação, análise, funcionais e layout e não interferem muito em como eu codifico ou se nada está errado. A maioria pode ser ignorada ou desativada um pouco se você estiver experimentando ou trabalhando em torno de algo que você revisitará mais tarde.
Ah, e não há nada errado com um eco ou print_r bem posicionado para verificar algo em uma chave (contanto que você os remova quando terminar).
Check out Query Monitor combinado com Query Monitor Extend para depuração abrangente do WordPress (erros PHP/avisos/stricts/avisos, consultas de banco de dados, caminhos, constantes, solicitações HTTP, transientes, variáveis de sessão, dump var) .
Confira também Todos os Post Meta e Salvando What plugins para informações específicas sobre os posts.
PHPStorm e Xdebug é um jogo que está mudando para o desenvolvimento do WordPress. Altamente recomendo agora. Especialmente com as ferramentas de depuração inline.
Eu estou usando phpED e xdebug, mas para mim (e parece para outra pessoa) é impossível depurar os plugins ou o arquivo do tema! O depurador só pára nos pontos de interrupção que estão nos arquivos "principais" principais ou originais! Alguém pode me ajudar?