Rexx - Depuração
A depuração é um recurso importante em qualquer linguagem de programação. Ajuda o desenvolvedor a diagnosticar erros, encontrar a causa raiz e resolvê-los de acordo. No Rexx, o utilitário de rastreamento é usado para depuração. A instrução de rastreamento pode ser implementada de 2 maneiras, uma é o modo em lote e a outra é o modo interativo. Vejamos como implementar as duas opções.
Rastrear em modo de lote
O comando trace é usado para fornecer um nível detalhado de cada comando Rexx que é executado.
A sintaxe geral da instrução trace é mostrada a seguir -
Sintaxe
trace [setting]
Onde a configuração pode ser qualquer uma das seguintes opções -
A - Rastreia todos os comandos.
C - Apenas rastreia os comandos do host que são enviados ao sistema operacional.
E - Apenas rastreia os comandos do host que são enviados ao sistema operacional e que resultaram em um erro.
F - Apenas rastreia os comandos do host que são enviados ao sistema operacional e que resultaram em uma falha.
I - Isso fornece um rastreamento de nível intermediário dos comandos Rexx.
L - Esta opção é se você deseja rotular o rastreamento conforme ele acontece.
N - Esta é a opção padrão em que nenhum rastreamento acontece.
Vamos dar uma olhada em um exemplo do comando trace.
Exemplo
/* Main program */
trace A
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then signal msg
say 'This is a whole number'
return 0
msg :
say ' This is an incorrect number '
O resultado do programa acima será o seguinte -
5 *-* n = 100.45 if datatype( n, wholenumber ) then signal msg
7 *-* say 'This is a whole number
This is a whole number
8 *-* return 0
Na saída, você pode ver que um rastreio adicional foi adicionado à saída do programa. As seguintes coisas podem ser observadas sobre a saída -
O número da linha junto com a instrução executada é adicionado à saída do rastreamento.
Cada linha executada é mostrada na saída do rastreamento.
Função Trace
O rastreamento também pode ser ativado com a ajuda da função de rastreamento. A sintaxe geral e o exemplo são mostrados abaixo.
Sintaxe
trace()
A função acima retorna o nível de rastreamento atual.
Parâmetros
Nenhum
Valor de retorno
A função acima fornece o nível de rastreamento atual.
Exemplo
/* Main program */
say trace()
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then signal msg
say 'This is a whole number'
return 0
msg :
say 'This is an incorrect number '
A saída do programa acima será a seguinte.
N
This is an incorrect number
A primeira linha de N indica que o traço está definido como Normal.
Definir valor de rastreamento
O nível de rastreamento pode ser definido com a função de rastreamento. A sintaxe geral e o exemplo são mostrados abaixo.
Sintaxe
trace(travel_level)
Parâmetros
trace_level - Isso é semelhante às opções disponíveis para definir o nível de rastreamento.
Valor de retorno
A função acima fornece o nível de rastreamento atual.
Exemplo
/* Main program */
say trace()
current_trace = trace('A')
say current_trace
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then
signal msg say 'This is a whole number'
return 0
msg :
say ' This is an incorrect number '
O resultado do programa acima será o seguinte -
N
4 *-* say current_trace
N
6 *-* n = 100.45
7 *-* if \ datatype( n, wholenumber ) then
8 *-* signal msg
12 *-* say 'This is an incorrect number'
'This is an incorrect number'
Traçado interativo
O rastreamento interativo é aquele em que o rastreamento é realizado conforme o programa é executado. Assim como em um IDE como o Visual Studio for .Net, no qual você pode adicionar pontos de interrupção e ver como cada instrução é executada, da mesma forma aqui você também pode ver o programa conforme cada linha de código é executada.
A sintaxe geral é a seguinte -
Sintaxe
trace ?options
Onde, as opções são as mesmas para o comando trace, conforme mostrado abaixo.
A - Rastreia todos os comandos
C - Apenas rastreia os comandos do host que são enviados ao sistema operacional.
E - Apenas rastreia os comandos do host que são enviados ao sistema operacional e que resultaram em um erro.
F - Apenas rastreia os comandos do host que são enviados ao sistema operacional e que resultaram em uma falha.
I - Isso fornece um rastreamento de nível intermediário dos comandos Rexx.
L - Esta opção é se você deseja rotular o rastreamento conforme ele acontece.
N - Esta é a opção padrão em que nenhum rastreamento acontece.
Vamos dar uma olhada em um exemplo de implementação de rastreamento ativo.
Exemplo
/* Main program */
trace ?A
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then
signal msg
say 'This is a whole number'
return 0
msg : say 'This is an incorrect number'
A saída do programa acima será conforme mostrado no programa a seguir. O rastreamento irá parar em cada linha de código; então você precisa pressionar o botão Enter para mover para a próxima linha de código.
This is an incorrect number
+++ "LINUX COMMAND /home/cg/root/5798511/main.rex"
5 *-* n = 100.45 if datatype( n, wholenumber ) then
+++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++
6 *-* signal msg
10 *-* msg :
10 *-* say 'This is an incorrect number'