"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Depuração &#printf&# aprimorada

Depuração &#printf&# aprimorada

Publicado em 2024-11-03
Navegar:125

Uma das técnicas de depuração mais comuns, a depuração 'printf' é particularmente popular porque a maioria das pessoas a aprende intuitivamente ao escrever seus primeiros programas.

A depuração

'printf' é muito acessível porque você não precisa de nenhuma ferramenta especial para isso. Ao enfrentar seus primeiros bugs, antes mesmo de saber o que é um depurador, o natural a fazer é fazer com que seu programa imprima as variáveis ​​passo a passo, para que você possa acompanhar a execução no console.

Embora seja uma das técnicas de depuração mais básicas, também é amplamente utilizada por desenvolvedores experientes. Ele pode ajudá-lo a investigar qualquer tipo de problema, como rotinas abaixo do ideal, estado inconsistente, problemas de multithreading e muito mais.

Como já mencionei, esta técnica não requer o uso de nenhuma ferramenta especial, como um IDE. No entanto, se você estiver usando um, ele poderá torná-lo ainda mais eficiente na gravação do estado do programa.

Nota: Este artigo mostra os recursos do IntelliJ IDEA. Recursos semelhantes podem ou não estar disponíveis em outros IDEs. Se você estiver usando uma ferramenta diferente, considere verificar sua documentação para ver se esses recursos também estão presentes.

modelos ao vivo

IntelliJ IDEA fornece modelos dinâmicos para os padrões de registro de depuração mais comuns. Para usar um modelo ativo para registro de depuração, insira a abreviatura correspondente e pressione Tab. O IntelliJ IDEA irá gerar a instrução print e inseri-la no cursor.

Vejamos alguns exemplos.

Registrar parâmetros do método

public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) {

    // escriba 'soutp' aquí, luego presione Tab

    return null;
}

Código gerado:

public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) {

    System.out.println("in = "   in   ", mask = "   mask   ", newColor = "   newColor);

    return null;
}

Registrar valores

public static double coolMethod(double parameter) {
    double a = Math.random();
    double b = Math.random();

    // escriba 'soutv' aquí, presione Tab y luego seleccione el valor

    return a * b * parameter;
}

Código gerado:

public static double coolMethod(double parameter) {
    double a = Math.random();
    double b = Math.random();

    System.out.println("b = "   b);

    return a * b * parameter;
}

Registrar entradas de método

public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) {

    // escriba 'soutm' aquí

    return null;
}

Código gerado:

public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) {

    System.out.println("ImageUtils.recolor");

    return null;
}

Registrando pontos de interrupção

Uma das desvantagens da depuração com instruções de impressão é que elas introduzem a sobrecarga do gerenciamento manual. Você não pode ligá-los e desligá-los rapidamente e definitivamente não quer cometer o erro de enviá-los e colocá-los em produção.

Por esse motivo, se você precisar registrar algo para fins de depuração, eu recomendaria usar pontos de interrupção de registro, pois eles são muito mais fáceis de manusear.

Depuración

Para definir um ponto de interrupção de registro, segure Shift e clique na margem. Ao contrário de um ponto de interrupção normal, ele não suspende a execução do programa, mas imprime no console.

Por padrão, esta é uma mensagem indicando que o programa atingiu esta linha. Você também pode usar as opções próximas à caixa de seleção Avaliar e registrar nas configurações do ponto de interrupção se preferir registrar o rastreamento de pilha atual ou o resultado de uma expressão personalizada.

Depuración

Nota: Tenha cuidado com as expressões de registro. Avaliar aqueles que causam efeitos colaterais pode ser fonte de novos bugs ou comportamentos inesperados. Além disso, quando usados ​​em código quente, eles podem tornar seu programa significativamente mais lento.

Quando os pontos de interrupção de log se tornam numerosos, você pode rastreá-los e gerenciá-los na caixa de diálogo Breakpoints (Run | View Breakpoints ):

Depuración

Você pode até criar grupos personalizados para eles:

Depuración

Isso ajudará você a gerenciar seus pontos de interrupção de maneira centralizada. Por exemplo, você pode criar um grupo relacionado a um bug específico e salvá-lo para mais tarde. Quando o problema desaparecer, basta desligá-lo. Dessa forma, caso o problema apareça novamente, você não precisa recriar tudo do zero. Você simplesmente reativa o grupo.

Registro de eventos frequentes

Para eventos que ocorrem muito durante a execução do programa, registrar cada evento individualmente pode ser supérfluo. Isso não apenas inunda o console com mensagens, mas muita interação de E/S pode retardar significativamente a sessão de depuração.

Depuración

Para esses eventos, pode ser útil usar a função Contagem de passes. Você pode acessá-lo na caixa de diálogo Breakpoints.

.

Depuración

Depois de definir Contagem de passes para um valor específico, o ponto de interrupção correspondente só será acionado cada vez que for alcançado n vezes, garantindo que o registro não se torne um incômodo.

Resumo

Esteja você inserindo instruções de impressão ou definindo pontos de interrupção de registro para depuração, as ferramentas modernas têm recursos para melhorar sua experiência de depuração. Com este post, queria ter certeza de que você conhece esses pequenos truques que tornam todo o processo mais agradável.

Se você estiver interessado em mais artigos relacionados à depuração e criação de perfil, confira alguns dos meus outros artigos:

  • Debugger.godMode() – hackear um aplicativo JVM com o depurador
  • Solucionar problemas do depurador lento
  • O que há de errado com createDirectories()? - Guia para perfil de CPU
  • Depurar sem pontos de interrupção
Declaração de lançamento Este artigo está reproduzido em: https://dev.to/flounder4130/depuracion-printf-mejorada-26l1?1 Se houver alguma infração, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3