it-swarm-pt.tech

Como você depura plugins?

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?

47
Sruly

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 .

21
John P Bloch

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.

12
tomdxw

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.

10
Raj

Eu depuro a maneira antiga, error_log()ing e var_dumping. 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_loging 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.

6
Joe Hoyle

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

5
Gnuget

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.

5
SethMerrick

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.

3
bueltge

Não é tão ruim assim: Eclipse Está perto de PhpStorm + livre.

2
kaiser

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.

2
Annika Backstrom

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.

1
MikeSchinkel

Krumo - a classe de depuração php estilizada

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

  • objetos,
  • matrizes,
  • strings/float/integer/etc.

Plus ajuda com backtracing, mostra classes carregadas ou arquivos incluídos e tudo sob demanda.

Plus é grátis!

Baixar

Krumo @sourceforge

1
kaiser

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

0
Lunc

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.

0
Caleb

PHPStorm e Xdebug é um jogo que está mudando para o desenvolvimento do WordPress. Altamente recomendo agora. Especialmente com as ferramentas de depuração inline.

0
Emanuel Rocha Costa

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?

0
Kreker