> **Источник:** https://python-all.ru/3.2/library/cgitb.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 20.3. [`cgitb`](https://python-all.ru/3.2/library/cgitb.html#module-cgitb) – менеджер трассировки для CGI-скриптов

Модуль [`cgitb`](https://python-all.ru/3.2/library/cgitb.html#module-cgitb) предоставляет специальный обработчик исключений для скриптов Python. (Его название может вводить в заблуждение. Изначально он был разработан для отображения подробной информации о трассировке в HTML для CGI-скриптов. Позже он был обобщен для отображения этой информации и в виде обычного текста.) После активации этого модуля, если возникает необработанное исключение, отображается подробный форматированный отчет. Отчет включает трассировку с фрагментами исходного кода для каждого уровня, а также значения аргументов и локальных переменных текущих выполняемых функций, чтобы помочь в отладке проблемы. При желании эту информацию можно сохранить в файл вместо отправки в браузер.

Для включения этой возможности добавьте следующее в начало CGI-сценария:

```python
import cgitb
cgitb.enable()
```

Параметры функции [`enable()`](https://python-all.ru/3.2/library/cgitb.html#cgitb.enable) управляют тем, будет ли отчет отображаться в браузере и будет ли отчет записываться в файл для последующего анализа.

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

Эта функция заставляет модуль [`cgitb`](https://python-all.ru/3.2/library/cgitb.html#module-cgitb) переопределить стандартную обработку исключений интерпретатора, устанавливая значение [`sys.excepthook`](https://python-all.ru/3.2/library/sys.html#sys.excepthook).

Необязательный аргумент *display* по умолчанию равен `1` и может быть установлен в `0` для подавления отправки трассировки в браузер. Если аргумент *logdir* присутствует, отчеты трассировки записываются в файлы. Значение *logdir* должно быть каталогом, в который будут помещены эти файлы. Необязательный аргумент *context* – это количество строк контекста, отображаемых вокруг текущей строки исходного кода в трассировке; по умолчанию равно `5`. Если необязательный аргумент *format* равен `"html"`, вывод форматируется как HTML. Любое другое значение приводит к выводу в виде обычного текста. Значение по умолчанию – `"html"`.

#### `cgitb.handler(info=None)`

Эта функция обрабатывает исключение, используя настройки по умолчанию (то есть показывает отчет в браузере, но не записывает в файл). Ее можно использовать, когда перехвачено исключение и требуется сообщить о нем с помощью [`cgitb`](https://python-all.ru/3.2/library/cgitb.html#module-cgitb). Необязательный аргумент *info* должен быть кортежем из трех элементов, содержащим тип исключения, значение исключения и объект трассировки – в точности как кортеж, возвращаемый [`sys.exc_info()`](https://python-all.ru/3.2/library/sys.html#sys.exc_info). Если аргумент *info* не передан, текущее исключение получается из [`sys.exc_info()`](https://python-all.ru/3.2/library/sys.html#sys.exc_info).
