21.3. cgitb — Gerenciador de traceback (situação da pilha de execução) para roteiros de CGI

Código Fonte: Lib/cgitb.py


O módulo cgitb fornece um tratador de exceção especial para scripts Python. (Seu nome é um pouco enganador. Ele foi originalmente projetado para exibir informações abrangentes de rastreamento em HTML para scripts CGI. Posteriormente, foi generalizado também para exibir essas informações em texto sem formatação.) Após esse módulo ser ativado, se ocorrer uma exceção não detectada, um relatório detalhado e formatado será exibido. O relatório inclui um traceback mostrando trechos do código-fonte para cada nível, bem como os valores dos argumentos e variáveis locais das funções atualmente em execução, para ajudá-lo a depurar o problema. Opcionalmente, você pode salvar essas informações em um arquivo em vez de enviá-las para o navegador.

Para habilitar esse recurso, basta adicioná-lo ao topo do seu script CGI:

import cgitb
cgitb.enable()

As opções da função enable() controlam se o relatório é exibido no navegador e se o relatório é registrado em um arquivo para análise posterior.

cgitb.enable(display=1, logdir=None, context=5, format="html")

Esta função faz com que o módulo cgitb assumir o tratamento padrão do interpretador para exceções definindo o valor de sys.excepthook.

O argumento opcional display é padronizado como 1 e pode ser definido como 0 para suprimir o envio do traceback ao navegador. Se o argumento logdir estiver presente, os relatórios de traceback serão gravados nos arquivos. O valor de logdir deve ser um diretório em que esses arquivos serão colocados. O argumento opcional context é o número de linhas de contexto a serem exibidas em torno da linha atual do código-fonte no traceback; o padrão é 5. Se o argumento opcional format for "html", a saída será formatada como HTML. Qualquer outro valor força a saída de texto sem formatação. O valor padrão é "html".

cgitb.handler(info=None)

Essa função trata uma exceção usando as configurações padrão (ou seja, mostra um relatório no navegador, mas não faz logon em um arquivo). Isso pode ser usado quando você capturou uma exceção e deseja denunciá-la usando cgitb. O argumento opcional info deve ser uma tupla de três, contendo um tipo de exceção, um valor de exceção e um objeto de traceback exatamente como a tupla retornada por sys.exc_info(). Se o argumento info não for fornecido, a exceção atual será obtida em sys.exc_info().