você está aqui: Home  → Colunistas  →  Cantinho do Shell

 

Debug no bash

Colaboração: Fernando M. Roxo da Motta

Data de Publicação: 11 de Setembro de 2009

Por vezes um script é muito grande e nos interessa fazer este "trace" apenas em um trecho do programa. Como fazê-lo? Coloque no início do trecho uma instrução:

set -x

Desta linha em diante o "trace" será ligado. Para desligar o "trace" mais adiante para evitar listar partes sem importância, use :

set +x

Veja que por vezes nós sabemos que o "problema" só ocorre quando alguma variável assume um determinado valor. Neste caso podemos ligar o "trace" condicionalmente :

if [ $VARIAVEL = valor ]; then
 set -x
fi
{trecho a debugar}
set +x

Como se pode ver o "trace" pode ser desligado mesmo que ele não esteja ligado.

Esta forma de listar o script, durante a execução, vai listar o comando após a substituição das variáveis. Como identificar que variável tem que valor? Podemos usar a opção "-v" para listar as linhas duarnte a leitura. Na verdade eu prefiro usar uma combinação das duas opções:

set -xv
{trecho a "debugar"}
set +xv

Da mesma forma que antes o "+" desliga a opção.

Um último par de dicas. Se um script "liga" o "debug", apenas os "scripts" rodados com o comando "." terão o "debug" ligado. Para evitar que fique algum "debug" ligado quando se reutiliza o ambiente ( através do comando "." ) é interessante colocar no final do script um desligar geral de "debug", mesmo que o "debug" não tenha sido ligado :

#
# Desliga "debug" se tiver sido ligado
set +xv
# Fim do script....
Publicado originalmente na Dicas-L em 19 de abril de 2004
Error: No site found with the domain 'moodle.idph.com.br' (Learn more)