Como forçar um erro no Protheus para ver a pilha de chamadas

Hoje vou mostrar uma dica de como forçar um erro no Protheus para analisar a pilha de chamadas.

Algumas vezes, é interessante analisarmos a pilha de chamadas, variáveis e tabelas de um error log para tentarmos decifrar o que está causando o erro.

Porém em algumas mensagens de erro, não é exibido o error log, por se tratar de alguma validação padrão do sistema. Essas mensagens são as famosas Help().

Acontece que boa parte dessas mensagens, já vem com alguma solução para o analista seguir, porém eu já peguei alguns casos de não vir a solução, ai era necessário saber o que estava causando, por isso da ideia de forçar o error log.

Basicamente o que fazemos é assim, criamos um código fonte que ocasionará o erro de propósito (no nosso caso será um type mismatch), e esse fonte iremos vincular a algum atalho do teclado, como por exemplo, Shift + F9. Ai quando a tela estiver sendo exibida, pressionamos esse atalho, e podemos pegar o log completo.

Abaixo um print, no caso eu estava no cadastro de produtos e inseri uma unidade de medida errada, e ao aparecer a tela de log, apertei o atalho configurado:

Tela de Error log

Abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zErro
Função que força a exibição de um Error Log para análise
@type  Function
@author Atilio
@since 10/05/2021
@version version
@obs O ideal é adicionar a rotina no AfterLogin como um atalho do sistema, por exemplo:
User Function AfterLogin()
    //...

    SetKey(K_SH_F9, { || u_zErro() }) //Shift + F9

    //...
Return
/*/

User Function zErro()
    Local nVar := 0
    Local cVar := ""

    //Ao tentar somar / concatenar numérico com caractere irá causar o type mismatch
    Alert(nVar + cVar)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan Atilio (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

Deixe uma resposta