Se quisermos produzir um produto de alta qualidade da nossa Oracle BRM Para desenvolver software, temos de cumprir alguns requisitos relativamente ao nosso processo de desenvolvimento. É especialmente importante incorporar boas técnicas de teste e depuração no nosso processo de desenvolvimento.
Os testes são um processo de detecção de falhas ou erros num produto de software que é efectuado manualmente por um testador ou pode ser automatizado.
Depuração é o processo de encontrar e resolver defeitos ou problemas num programa de computador que impedem o funcionamento correcto do software ou de um sistema. Basicamente, é um processo de correcção dos erros encontrados na fase de teste. O programador ou programador é responsável pela depuração e esta não pode ser automatizada.
Tabela de conteúdos
Depurar código personalizado de opcodes de política Oracle BRM
Ao personalizar os códigos de operação de política em Oracle BRM é frequentemente necessário depurar algum código para encontrar potenciais erros ou analisar o comportamento do código. Algumas análises básicas podem ser feitas registando algumas mensagens de depuração e analisando os registos, mas um método muito mais avançado e poderoso é utilizar uma ferramenta separada - o depurador. Neste artigo, veremos como podemos usar o depurador de código aberto GDB para depurar um processo Oracle BRM cm que executa também algum código personalizado (veja a figura abaixo).
GDB é um depurador de código aberto que fornece muitas ferramentas avançadas e poderosas para analisar e depurar o nosso código. Algumas das funcionalidades básicas do GDB são os pontos de interrupção (condicionais/não condicionais), watches, back traces e execução incremental de código. Claro que também pode ver e modificar valores de variáveis e chamar várias funções. Agora vamos ver como usamos o GDB com o processo cm na prática.
A depuração na prática
Primeiro, temos de obter um PID do nosso processo CM:
ps x
Encontre o PID do processo CM e utilize-o para se ligar a esse processo com a GDB:
gdb cm
Agora o shell GDB é aberto, onde podemos executar vários comandos que o GDB suporta. Cada nova conexão que é estabelecida com o CM causa a geração de um novo processo CM filho do CM pai. Queremos que o GDB também rastreie esses processos filhos. Execute o seguinte comando no shell do GDB:
(gdb) definir follow-fork-mode child
Dependendo das suas necessidades, pode também querer explorar os comandos set detach-on-fork e attach. Agora vamos definir um ponto de interrupção para uma implementação de código de operação de política, como no exemplo a seguir:
(gdb) break fm_act_pol_post_reauthorize.c:192
Quando desencadearmos agora a execução do código de operação da política, esta será interrompida por um ponto de interrupção (ou mesmo antes disso, notificar-nos-á de que foi criado um novo filho). Podemos então seguir o fluxo de código passo a passo utilizando os comandos next (abreviatura n) ou step. Se estivermos interessados num valor de uma variável, podemos imprimi-lo utilizando:
imprimir
Muitas outras características mais avançadas e poderosas estão também à nossa disposição e são descritas em pormenor na documentação da GDB e na ajuda integrada. Está convidado a pesquisá-las para ver como o podem ajudar.