Saltar para o conteúdo principal
Versão: Próximo

Depuração

Os erros são comuns. Seria incomum escrever um número substancial de linhas de código sem gerar quaisquer erros. Por outro lado, tratar e/ou corrigir erros também é normal!

O ambiente de desenvolvimento 4D fornece várias ferramentas de depuração para todos os tipos de erros.

Tipos de erro

Erros de dactilografia

Os erros de digitação são detectados pelo editor de código. São exibidos em vermelho e são fornecidas informações adicionais na parte inferior da janela. Aqui está um erro de dactilografia:

break-point

Esses erros de digitação geralmente causam erros de sintaxe (na imagem acima, o nome da tabela é desconhecido). Obtém a descrição do erro quando validar a linha de código. Quando isso ocorrer, corrija o erro de digitação e digite Enter para validar a correção.

Erros de sintaxe

Alguns erros só podem ser detectados quando o método for executado. La ventana de error de sintáxis aparece cuando ocurre un error durante la ejecución del código. Por exemplo:

syntax-error

Expanda el área Detalles para mostrar el último error y su número.

Erros ambientais

Ocasionalmente, pode não haver memória suficiente para criar um BLOB. Ou, quando se acede a um documento no disco, o documento pode não existir ou pode já estar aberto por outra aplicação. Estes erros ambientais não ocorrem diretamente devido ao seu código ou à forma como o escreveu. La mayoría de las veces estos errores son fáciles de tratar con un método de captura de errores instalado utilizando el comando ON ERR CALL.

Erros de concepção ou de lógica

Estes são geralmente o tipo de erro mais difícil de encontrar. Com exceção dos erros de digitação, todos os tipos de erros acima enumerados são, em certa medida, abrangidos pela expressão "erro de conceção ou de lógica". Utilice el depurador para detectarlos. Por exemplo:

  • Puede ocurrir un error de sintaxis cuando intenta utilizar una variable que aún no está inicializada.
  • Puede ocurrir un error de entorno cuando intenta abrir un documento, porque el nombre de ese documento es recibido por una subrutina que no obtuvo el valor correcto como parámetro.

Os erros de concepção ou lógicos incluem também situações como:

  • Un registro no está correctamente actualizado porque, mientras se llama a SAVE RECORD, se olvidó de la primera prueba de si el registro estaba bloqueado o no.
  • Um método não faz exatamente o que se espera, porque a presença de um parâmetro opcional não é testada.

Por vezes, a parte do código que apresenta o erro pode ser diferente do código que está efetivamente na origem do problema.

Erros de execução

No modo Aplicação, pode obter erros que não se vêem no modo interpretado. Aqui está um exemplo:

runtime-error

Para encontrar rapidamente a origem do problema, reabrir a versão interpretada do ficheiro da estrutura, abrir o método e ir para a linha correspondente.

Janela de erro sintáctico

A janela erro de sintaxe aparece automaticamente quando a execução de um método é interrompida. Isto pode acontecer quando:

  • um erro impede a continuação da execução do código
  • el método produce una afirmación falsa (ver el comando ASSERT)

syntax-error

A área de texto superior apresenta uma mensagem que descreve o erro. A área de texto inferior mostra a linha que estava a ser executada quando ocorreu o erro; a área onde ocorreu o erro é realçada. A secção Detalhes expandidos contém a "pilha" de erros relacionados com o processo.

A janela de erro de sintaxe propõe várias opções:

  • Modificar: detiene la ejecución de todos los métodos. 4D muda para o ambiente de Design e o método com o erro é aberto no Editor de Código, permitindo sua correção. Utilize esta opção quando reconhecer imediatamente o erro e puder corrigi-lo sem mais investigações.

  • Rastrear: entra en modo Rastrear/Depurador. Se muestra la ventana del Depurador. Si la línea actual solo se ha ejecutado parcialmente, es posible que tenga que hacer clic en el botón rastrear varias veces.

  • Continuar: la ejecución continua. A linha com o erro pode ser parcialmente executada, dependendo da localização do erro. Continue com cuidado: o erro pode impedir que o resto do seu método seja executado corretamente. Recomendamos hacer clic en Continuar sólo si el error está en una llamada trivial (como SET WINDOW TITLE) que no impide ejecutar y probar el resto de su código.

tip

To ignore an error that occurs repeatedly (for example, in loops), you can turn the Continue button into an Ignore button. Hold down Alt (Windows) or Option (macOS) key and click the Continue button the first time it appears. The button label changes to Ignore if the dialog is called again for the same error.

  • Abort: Stops method execution and returns to the state before the method started executing:

    • Se um método formulário ou um método objeto estiver a ser executado em resposta a um evento, é interrompido e o usuário regressa ao formulário.
    • Se o método estiver sendo executado a partir do ambiente Application, o usuário regressa a esse ambiente.
  • Copy: Copies the debugging information into the clipboard. A informação descreve o ambiente interno do erro (número, componente interno, etc.). Eles são formatados como texto tabulado.

  • Save...: Saves the contents of the syntax error window and the call chain in a .txt file.

Depurador

A common beginner mistake in dealing with error detection is to click Abort in the Syntax Error Window, go back to the Code Editor, and try to figure out what's going by looking at the code. Não faça isso! You will save plenty of time and energy by always using the Debugger.

O depurador permite-lhe percorrer os métodos lentamente. Apresenta todas as informações necessárias para compreender o motivo do erro. Assim que tiver esta informação, saberá como corrigir o erro.

Outra razão para utilizar o depurador é para desenvolver código. Por vezes, pode escrever um algoritmo que é mais complexo do que o habitual. Apesar de todos os sentimentos de realização, não pode ter a certeza absoluta de que a sua codificação está 100% correcta. Instead of running it "blind", you can use the TRACE command at the beginning of your code, then execute it step by step to keep an eye on what happens.

Rupturas

No processo de depuração, pode ser necessário saltar o rastreio de algumas partes do código até uma determinada linha. Or, you may want to trace the code when a given expression has a certain value (e.g. $myVar > 1000), or every time a specific 4D command is called.

These needs are covered by breakpoints and command catching features. Podem ser configurados a partir do editor de código, do depurador ou do explorador de execução.