Funções ADVPL para Verificação e Listagem da Pilha de Execução
Neste artigo, compartilho duas funções úteis para quem trabalha com ADVPL: uma para verificar se uma função existe na pilha e outra para listar toda a pilha de chamadas diretamente no console.
A função de listagem pode ser facilmente adaptada para registrar informações em LOG, caso seja necessário monitorar fluxos específicos da aplicação.
Os exemplos completos estão disponíveis no meu GitHub.
A função de verificação de pilha é semelhante às nativas FWISINCALLSTACK e ISINCALLSTACK.
Função: Listar Pilha de Chamada
/*/{Protheus.doc} UDPILHALISTAR
Lista pilha de chamada no console
@author Eurai Rapelli
@since 22.05.2012
@obs Conteúdo pode ser utilizado desde que respeite as referencias do autor.
@see https://www.udesenv.com.br
/*/
User Function UDPILHALIST()
Local n := 1
Do While !Empty( ProcName( n ) )
Conout( AllTrim( ProcName( n++ ) ) )
EndDo
Return( Nil )
Função: Verificar se Função Existe na Pilha
/*/{Protheus.doc} PILHAEXISTE
Procura na pilha função
@author Eurai Rapelli
@since 22.05.2012
@return lRet , Boolean , Retorno
@obs Conteúdo pode ser utilizado desde que respeite as referencias do autor.
@see https://www.udesenv.com.br
/*/
User Function UDPILHAEXIST( cFuncao )
Local nI := 0
Local lRet := .F.
Local cRot := Upper( AllTrim( ProcName( nI ) ) )
cFuncao := Upper( AllTrim( cFuncao ) )
Do While !Empty(cRot)
If cFuncao $ cRot
lRet := .T.
Exit
Else
nI := nI + 1
cRot := Upper( AllTrim( ProcName( nI ) ) )
Endif
EndDo
Return( lRet )
Finalizando
Gostou do conteúdo? Compartilhe com seus amigos e deixe um comentário! 😎
Um abraço e até a próxima!