Como você depura plugins?

49

Eu sou bastante novo na criação de plug-ins e estava com dificuldade para depurar.

Eu usei muito eco e é desleixado e feio.

Tenho certeza de que existe uma maneira melhor de fazer isso, talvez um IDE com um depurador no qual eu possa executar o site inteiro incluindo o plug-in?

Sruly
fonte
11
Eu não vi um IDE que execute o WordPress inteiramente dentro do IDE ... embora isso fosse incrível. Eu depuro plug-ins executando o WAMP localmente e código no Dreamweaver. Se você definir WP_DEBUGcomo false, como John recomenda, terá uma boa idéia do que está acontecendo de errado nos scripts. Em seguida, você pode editar no Dreamweaver, pressionar Ctrl + S e, em seguida, F5 no navegador para visualizar imediatamente as alterações.
EAMann
11
@EAMann - Verifique o PhpEd (para Windows) e o PhpStorm + XDEBUG (para Mac, Linux e Windows).
MikeSchinkel

Respostas:

21

Vá para wp-config.php e mude define('WP_DEBUG', false);para define('WP_DEBUG', true);. Além disso, instale o plug-in Log Deprecated Notices de Andrew Nacin .

John P Bloch
fonte
12
Eu confira outro artigo do Nacin também: andrewnacin.com/2010/04/23/5-ways-to-debug-wordpress
kevtrout
Com o PHP 5.4+, você provavelmente será inundado com avisos E_STRICT. Solte essa essência na pasta de plug-ins e ative-a para remover os avisos estritos, desative-os para retornar ao serviço normal.
Webaware
12

Se você estiver recebendo erros impressos, o x-debug é uma extensão brilhante do PHP que adiciona traços 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 registra sua saída em um arquivo. Então eu plog ($ variable) e isso aparece no arquivo de log que eu posso examinar. Isso é especialmente útil quando você está tentando descobrir o que aconteceu antes do cabeçalho () ser chamado ou em outras situações em que não é possível imprimir em STDOUT.

tomdxw
fonte
10

Use o xdebug + NetBeans IDE. Quando totalmente configurado - o que é fácil de fazer - você pode definir pontos de interrupção no 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.

Raj
fonte
6

Eu depuro da maneira antiga, error_log()ing e var_dumping. Acho que é a maneira mais eficiente para mim, tenho algumas funções de wrapper para lidar com diferentes tipos de dados, pois error_logmatrizes e objetos podem ser uma dor. Além disso, usar print_r()in pode ser difícil de ler quando não está em a <pre>. Eu tenho tj_log()para o 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 seja.

Joe Hoyle
fonte
5

Depois de mexer com vários IDEs, decidi usar o Notepad ++ simples e antigo com um esquema de cores de destaque de sintaxe ultra-personalizado.

Eu tenho uma macro configurada de modo que, quando pressiono Shift-Ctrl-X, o código a seguir obtém a saída onde está o cursor:

echo "<pre>";
var_dump($);
echo "</pre>";
exit();

É simples, mas geralmente posso caçar 90% dos meus erros com essa macro mais o WP_DEBUG ativado.

SethMerrick
fonte
2
Boa jogada. Teclas de atalho no editor rock!
hakre 25/08/10
11
Eu prefiro a saída dada por em print_r($var, true)vez de var_dump.
brasofilo
5

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, em seguida, você poderá usar o comando tail (se 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 que você precisa alterar a linha 20 para um caminho em que deseja salvar seu arquivo de log

Gnuget
fonte
3

Eu uso o Aptane IDE no Linux e o UltraEdit no Windows, e este também possui um analisador de PHP. Além disso, visualizo todas as dicas do xDebug com a constante WP_DEBUGdefinida 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.

bueltge
fonte
2

Eu recomendo verificar o FirePHP . Você pode enviar informações de depuração para os cabeçalhos HTTP do Firebug do Firefox, o que geralmente resulta em uma saída de depuração mais limpa.

Annika Backstrom
fonte
2

Não é tão ruim assim: Eclipse É perto do PhpStorm + grátis.

kaiser
fonte
1

Existem dois IDEs que posso recomendar e os utilizei amplamente: PhpED (somente Windows) e PhpStorm + XDEBUG (Mac, Windows e Linux.) Estou no Mac agora e só pode usar o último.

Ambos ROCK! As boas notícias de que o PhpStorm custa 49 dólares antes de setembro de 2010 e apenas 99 dólares depois disso. Se eu estivesse no Windows e tivesse que escolher novamente, não tenho certeza qual escolheria.

Sinceramente, não posso deixar de sentir que qualquer desenvolvedor de plug-in que não use uma dessas duas ferramentas é severamente prejudicado, especialmente se for relativamente novo no desenvolvimento de plug-ins do WordPress.

MikeSchinkel
fonte
1

Krumo - a classe de depuração de php com estilo

Outra coisa realmente legal é a classe php "krumo". É implementado em ½ min e oferece uma maneira fácil de depurar todos os tipos de variáveis:

  • objetos,
  • matrizes,
  • strings / float / número inteiro / etc.

Além disso , ajuda no rastreamento, mostra as classes carregadas ou os arquivos incluídos e tudo sob demanda.

Além disso , é GRÁTIS!

Baixar

Krumo @sourceforge

kaiser
fonte
0

Eu uso um plug-in de $ 13 chamado LogPress que você pode comprar no ThemeForest e é um envio absoluto de Deus. Você pode depurar tudo relacionado a seus plugins e site. Oferece suporte ao registro do console Firebug e muito mais. Não posso viver sem ele, é o quanto eu uso este plugin.

Este plugin é provavelmente o melhor dinheiro que já gastei e economizou inúmeras horas no meu desenvolvimento de plugins do Wordpress.

Dwayne Charrington
fonte
Uau, fiquei com o voto negativo por recomendar um plug-in pago do qual não tenho nenhuma associação. Isso é um pouco pesado, não é?
Dwayne Charrington
Não sou eu quem está votando, mas não estou surpreso. Você está usando palavras como se estivesse tentando vender o plugin. Recomendar coisas é bom, mas forçar a venda forçada como "envio absoluto a Deus". As pessoas odeiam anúncios. Apenas diminua o idioma e a recomendação falará por si mesma.
icc97
0

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 pára apenas nos pontos de interrupção que estão nos arquivos "principais" principais ou originais! alguém pode me ajudar?

Kreker
fonte
0

Primeiramente, adiciono define('WP_DEBUG', false);ao arquivo wp-config.php (como muitas pessoas disseram) à 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 e separadas, mas reflete bem pelo menos um local em que o plug-in será realmente usado.

Também adiciono o plug-in da Barra de Depuração junto com alguns dos complementos da Barra de Depuração (Transientes, por exemplo) - conforme apropriado para seus plug-ins.

Também uso o complemento Firebug para Firefox, que é excelente para ajudar a rastrear problemas de html, css e JavaScript também para analisar a estranheza do layout.

Eu codifico usando o UltraEdit, que eu tenho usado há mais de 15 anos para um monte de codificação (php através do SQL), tanto no trabalho como em casa, e isso funciona bem para mim, mas talvez não tenha o suficiente para classificar como IDE para muita gente. Possui destaque de sintaxe, preenchimento automático e recursos de layout de código e várias ferramentas de atalho html e css que podem ajudar a evitar erros de digitação e similares. Principalmente, isso me traz familiaridade, que é um aspecto importante, muitas vezes esquecido na corrida para o novo. A memória muscular ajuda na repetibilidade, mesmo na codificação.

E é claro que normalmente tenho uma página apropriada do códice aberta em outra guia em um exemplo adequado.

Tudo isso ajuda de maneiras diferentes a destacar erros de codificação, análise, funcionais e de layout e não interfere muito na maneira como codifico ou se nada está errado. A maioria pode ser ignorada ou desativada um pouco, se você estiver experimentando ou contornando algo que revisitará mais tarde.

Ah, e não há nada errado com um eco ou print_r bem posicionado para verificar algo em uma chave (desde que você os remova quando terminar).

user56586
fonte
0

Confira o Query Monitor combinado com o Query Monitor Extend para depuração abrangente do WordPress (erros / avisos / restrições / avisos do PHP, consultas ao banco de dados, caminhos, constantes, solicitações HTTP, transientes, variáveis ​​de sessão, var dumps).

Verifique também todos os plugins Meta e Salvar plugins para obter informações específicas sobre as postagens.

Caleb
fonte
0

O PHPStorm e o Xdebug são um jogo que mudou para mim no desenvolvimento do WordPress. Altamente recomendável agora. Especialmente com as ferramentas de depuração em linha deles.

Emanuel Rocha Costa
fonte
Como você configura?
jgraup
Basta ir ao site de ajuda deles: jetbrains.com/help/phpstorm/2016.2/configuring-xdebug.html
Emanuel Rocha Costa