Como depurar/rastrear a função bash?

Como depurar/rastrear a função bash?

Eu tenho um script bash myscript.sh, que contém várias funções. Para executar uma função, eu escreveria

source myscript.sh; myfunction

Como depurar tal função?

Responder1

Basta adicionar estas linhas antes da seção que deseja depurar.

set -v -x -e

e para desativá-lo.

set +v +x +e

Responder2

habilite a depuração em seu script e a depuração de saída para funções com functrace.

set -x
set -o functrace

Responder3

Você também deve poder usar no Bash:

$ set -xT

que permite rastreamento de função e

$ set +xT

desabilitar.

Além disso, com referência a outra resposta postada, não recomendo usar -v para depuração (modo detalhado), a menos que você esteja verificando a sintaxe de um script/conjunto de comandos shell. Uma outra solução (geral) que às vezes é útil é usar a -nopção em conjunto com -x. Isso "executará" um script/comandos sem realmente executar a última etapa da execução de um comando. Muitas vezes, isso pode permitir que você detecte erros difíceis em expansões de shell e similares, sem causar danos indesejados.

informação relacionada