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?


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 .


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.


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.


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.


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.


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


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.


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.



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.


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


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.


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?


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).


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.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.