4D v16.3

Ajudas diagnósticas de compilação

Página Inicial

 
4D v16.3
Ajudas diagnósticas de compilação

Ajudas diagnósticas de compilação  


 

 

Há três tipos de ajuda para a análise e correção de bancos de dados:

  • a verdadeira ajuda de análise é oferecida pelo arquivo de símbolos. Esta tabela lhe permite encontrar mais rapidamente suas variáveis. Esta é uma ferramenta valiosa para a interpretação de erros reportados pelo compilador.
  • a ajuda de correção é oferecida pelo arquivo de erros que pode ser utilizado como arquivo de texto.
  • a ajuda de execução ou controle de execução oferece uma ferramenta adicional de controle para monitorar a coerência e a confiabilidade de suas aplicações.


Nota: Também se oferece uma assistência significativa na declaração de variáveis pelos compiladores de sistemas automáticos - ver Criar Digitação.

O arquivo de símbolo é um tipo de documento de texto cujo tamanho dependerá do tamanho de seus bancos de dados. Por padrão, esse arquivo não é gerado no momento da compilação. Para fazer isso, você deve verificar a opção correspondente nas Preferências ver Opções de Compilação). Quando é gerado, o arquivo é colocado na pasta contendo a estrutura do banco e é chamado NomeBase.symbols.txt.
 
O arquivo de símbolo aparece como mostrado abaixo quando aberto utilizando um editor de texto:



O cabeçalho mostra o nome do banco de dados, a data e a hora de criação do documento. O documento está dividido em quatro partes:

  • Lista de variáveis de interprocesso.
  • Lista de variáveis de processo.
  • Lista de variáveis locais, em seu sistema.
  • Lista completa dos sistemas de projeto e dos sistemas de banco de dados com seus parâmetros, se aplicável.

Estas duas listas estão divididas em quatro colunas:

  • primeira coluna contém os nomes das variáveis de processo e interprocesso e matrizes utilizadas em seu banco de dados. Estas variáveis estão em ordem alfabética.
  • A segunda coluna contém o tipo da variável. Os tipos são determinados por um diretor de compilação ou pelo compilador em função do uso da variável. Se o tipo de uma variável não pode ser determinado, a coluna fica vazia.
  • A terceira coluna contém o número de dimensões da matriz, se a variável for uma matriz.
  • A quarta coluna contém a referência ao contexto na qual o compilador estableceu o tipo da variável. Se a variável é utilizada em vários contextos, somente o contexto mencionado é utilizado pelo compilador para determinar seu tipo.
    • Se a variável se encontra em um sistema de banco de dados, o nome do sistema de banco de dados é dado como se houvesse sido definido em 4D, precedido por (M)*.
    • Se a variável se encontra em um método de projeto, o método é identificado como se houvesse sido definido em 4D, precedido por (M).
    • Se a variável se encontra em um trigger (sistema de tabela), o nome de tabela é dado precedido por (MT).
    • Se a variável se encontra em um método de formulário, o nome de formulário é dado precedido pelo nome de tabela e de (FM).
    • Se a variável se encontra em um método de objeto, o nome do método de objeto é precedido pelo nome do formulário, o nome da tabela e por (MO).
    • Se a variável for um objeto de um formulário e não aparecer em nenhum sistema de projeto, sistema de formulário, trigger ou método de objeto, o nome do formulário no qual aparece, é dado precedido por (F).
    Ao final de cada lista, você encontra os tamanhos das variáveis de processo e interprocesso em bytes..

Nota: No momento da compilação, o compilador não pode determinar qual processo está usando uma variável de determinado processo.  A variável de processo pode ter um valor diferente em cada processo.  Portanto, todas as variáveis do processo sempre se repetem cada vez que você criar um novo processo: deve-se ter cuidado com a quantidade de memória que ocupam.  Além disso, lembre-se que o espaço para as variáveis de processo não está relacionado com o tamanho da memória para o processo.

A lista de variáveis está organizada pelo sistema do banco de dados, método de projeto, trigger (sistema de tabela), método de formulário e método de objeto, na mesma ordem que em 4D.

Esta lista está dividida em três colunas:

  • A primeira coluna contém a lista de variáveis locais utilizadas no método;
  • A segunda coluna contém o tipo da variável;
  • A tercera coluna contém o número de dimensões, se a variável é uma matriz

Uma lista completa de seus métodos de banco de dados e projeto se entrega ao final do arquivo com:

  • seu tipo (procedimento ou função devolvendo um valor)
  • os tipos de seus parâmetros e o resultado devolvido
  • o número de chamadas
  • a propriedad thread seguro ou thread não seguro (ver Processos 4D Preemptivos)

Esta informação se apresenta no seguinte formato:

Procedimento ou Função <Nome de método>(tipos de parâmetros):tipo de resultado, número de chamadas, thread seguro ou thread não seguro

É possível gerar ou não um arquivo de erros durante a compilação utilizando uma opção localizada nas Preferências da aplicação (ver (ver Opções de Compilação). Quando é gerado, o arquivo de erros é chamado NomeDoBanco_errors.xml e é criado junto ao arquivo de estrutura do banco de dados.

Ainda que os erros sejam diretamente accessíveis através da janela do compilador, pode ser útil ter um arquivo de erros que possa ser transmitido de uma equipe à outra, particularmente dentro do marco de vários desenvolvedores diferentes trabalhando juntos em um ambiente do cliente servidor. O arquivo de erros é gerado em formato XML a fim de facilitar a análise automática de seu conteúdo. Também é autorizada a criação de interfaces personalizadas de apresentação de erros:

O comprimento do arquivo de erros depende do número de erros e avisos emitidos pelo compilador. Quando se abre um arquivo de erros usando um editor de texto, vê-se este formulário: 

A estrutura do arquivo de erros é a seguinte:

  • Na parte superior do arquivo está a lista de erros e avisos, organizados por sistema e na ordem de sua criação em 4D;
  • Na seção ***Erros gerais***, são agrupadas todas as impossibilidades de declaração e as ambiguidades de identidade. Estes erros e avisos são listados utilizando o seguinte formato:
    • Primero, o número de linha no sistema (0 indica erros gerais);
    • Segundo, o atributo aviso indica se a anomalia detectada é um aviso (warning="true") ou um erro (warning="false");
    • E terceiro, um diagnóstico que descreve o erro.
    Se seu banco de dados não apresentar nenhum erro geral, o arquivo não terá uma seção “Erros gerais”.

Um arquivo de erros pode conter três tipos de mensagens:

  • erros associados a uma linha específica,
  • erros gerais,
  • avisos.

Estes erros são mostrados em contexto, a linha na qual se encontram, com uma explicação. O compilador reporta este tipo de erro quando encontra uma expressão na qual vê uma inconsistência relacionada com o tipo de dado ou sintaxe.

Na janela do compilador, faça um clique duplo em cada erro detectado para abrir o sistema relacionado diretamente no editor de sistemas 4D com a linha que contém o erro ressaltado.

A lista de diagnósticos de erros de sintaxe/digitação se encontra em Mensagens de Erro  do manual de Linguagem de 4D.

Estes são erros que nos permitem compilar o banco de dados. Há dois casos nos quais o compilador reporta um erro geral:

  • O tipo de uma variável de processo não pode ser determinado.
  • Dois tipos diferentes de objetos têm o mesmo nome.

Os erros gerais são chamados assim porque não podem ser associados a nenhum método em particular. No primeiro caso, o compilador não pode realizar uma declaração específica em qualquer parte do banco de dados. No segundo, não se pode decidir entre associar um nome dado com um objeto ou com outro.

A lista de erros gerais se encontra em Mensagens de Erro do manual de Linguagem de 4D.

Avisos  

Os avisos não são erros. Os avisos não impedem a compilação do banco de dados; simplesmente assinalam potenciais erros de código.

Na janela do compilador, os avisos aparecem em caracteres itálicos. Faça um clique duplo em cada aviso para abrir o sistema relacionado diretamente no editor de sistemas 4D. A lista de avisos se encontra em Avisos  do manual de Linguagem de 4D.

É possível desativar certos avisos (ver Desativação de avisos durante a compilação).

O controle de execução é selecionado por padrão nas Preferências do aplicativo (ver Opções de Compilação).

Enquanto todas as outras opções funcionam durante o processo de compilação, o controle da execução começa quando você executa um banco de dados compilados. Ou seja, as mensagens de controle de execução só aparecem enquanto você estiver executando o seu banco de dados compilados.

O controle de execução introduz uma análise adicional sobre a coerência lógica e sintática que normalmente caracteriza um compilador. Durante o controle de execução, o compilador faz a pergunta: "Considerando o que você solicitou, o resultado obtido lhe surpreenderá?" O controle de execução é um motorista “in situ”, que avalia o estado dos objetos no banco de dados em um determinado momento.

Isto é como funciona o controle de execução. Imagine que a matriz MinhaMatriz foi declarada como tipo texto. O número de elementos MinhaMatriz pode variar dependendo do sistema atual. Se você deseja atribuir o valor "Olá" ao item 5 de MinhaMatriz, escreva: 

 MiArray{5}:="Olá"

Se MinhaMatriz tem cinco pontos ou mais, está tudo bem. A tarefa é feita normalmente. No entanto, se MinhaMatriz for inferior a cinco pontos nesse momento, sua tarefa não fará sentido.
Esta situação não pode ser detectada no momento da compilação, uma vez que pressupõe a execução dos métodos.. O compilador não sabe as circunstâncias em que este sistema é chamado. Apenas controlar a execução lhe permite controlar exatamente o que está acontecendo quando seu banco de dados estiver em uso. No exemplo acima, o compilador mostrará um erro de execução em 4D. É facilmente visto que o controle de execução é particularmente valioso quando se processam matrizes, ponteiros e cadeias de caracteres.

As mensagens enviadas pelo compilador quando se solicita o controle de execução são listadas na Mensagens de controle de execução de linguagem 4D manual.

Inclusive quando o controle de execução foi ativado, em alguns casos você preferirá que não se aplique a certas partes confiáveis do código. Particularmente, no caso dos blocos de notas repetidos muitas vezes e quando se executa o banco de dados compilado em máquinas velhas, o controle de execução pode tornar o processo mais lento. Na medida em que se tenha a certeza de que o código relacionado é confiável e não pode causar erros de sistema, pode-se desativar localmente o controle de execução.

Para fazê-lo, você deve circular o código para excluir do controle de execução com os comentários `%R- e `%R+. O comentário `%R- desativa o controle de execução e `%R+ o ativa novamente se:

 ... //O controle de execução está ativado </p><p>// %R-
 ... //Ponha aqui o código para excluir do controle de execução
  // %R+
 ... //O controle de execução é ativado novamente para o resto do método

Nota:  Este mecanismo só funciona se o controle de execução estiver ativado.

Imagine que você perceba anomalias enquanto executa seus bancos de dados. Antes de especular sobre as possíveis causas destes problemas, lembre-se da ajuda que o compilador oferece.

As possíveis anomalias que podem surgir são

  • 4D mostra suas próprias mensagens de erro. Se for possível, corrija erros no seu banco de dados de acordo com as instruções de 4D. Se estas forem muito gerais, compile seu banco de dados novamente, assegurando-se de que a opção Controle de execução esteja ativada. Na localização de onde foi mostrado a mensagem de 4D, verá uma mensagem mais informativa do compilador.
  • Seus bancos de dados compilados não funcionam exatamente como seu banco de dados interpretado. Observe as mensagens de aviso.
  • As variáveis numéricas ou alfanuméricas não retornam os valores esperados. Verifique as opções de digitação nas Preferências e examine o arquivo de símbolos para verificar se todas suas variáveis estão bem digitadas.
  • Seu banco de dados funciona normalmente em modo interpretado, porém em modo compilado ocorre uma queda do sistema. Assegure-se de compilar o banco de dados utilizando a opção Controle de execução e verifique se seu banco de dados compilado está utilizando os mesmos plug-ins que utilizou ao momento da compilação.

 
PROPRIEDADES 

Produto: 4D
Tema: Compilação

 
HISTÓRIA 

Modificado: 4D v15 R5

 
PALAVRAS CHAVES 

%R, warning, Contrôle d'exécution

 
ARTICLE USAGE

Manual de Desenho 4D ( 4D v16)
Manual de Desenho 4D ( 4D v16.1)
Manual de Desenho 4D ( 4D v16.3)