Spec-Zone.ru › Haskell 9

Control.Exception.Backtrace

Авторские права (c) Университет Глазго 1994-2023
Лицензия см. libraries/base/LICENSE
Поддержка ghc-devs@haskell.org
Стабильность внутренняя
Переносимость непереносимая (расширения GHC)
Безопасный Haskell Нет
Язык Haskell2010

Содержание

  • Механизмы отслеживания стека
  • Сбор отслеживаний стека

Описание

Этот модуль предоставляет тип Backtrace, который обеспечивает общее представление информации об отслеживании стека, которое может быть, например, присоединено к исключениям (через механизм ExceptionContext). Эти отслеживания стека сохраняют полезный контекст о состоянии выполнения программы с использованием различных методов; мы называем эти методы *механизмами отслеживания стека*.

В настоящее время мы поддерживаем четыре механизма отслеживания стека:

  • CostCentreBacktrace захватывает текущий стек центров затрат, используя getCurrentCCS.
  • HasCallStackBacktrace захватывает HasCallStack CallStack.
  • ExecutionBacktrace захватывает стек выполнения, разворачивая его и разрешая символы с помощью информации отладки DWARF.
  • IPEBacktrace захватывает стек выполнения, разрешая имена с помощью информации о происхождении из таблицы информации.

Каждый из них полезен в разных ситуациях. Хотя CostCentreBacktrace легко сопоставляются обратно с исходной программой, они требуют, чтобы программа была снабжена центрами затрат, что влечёт за собой затраты во время выполнения. Аналогично, HasCallStackBacktrace требуют, чтобы программа была вручную аннотирована с помощью ограничений HasCallStack.

В отличие от этого, IPEBacktrace не требуют инструментации во время выполнения, но требуют, чтобы (по крайней мере, часть) программы была скомпилирована с флагом -finfo-table-map GHC. Кроме того, поскольку информация о происхождении из таблицы информации выводится после оптимизации, её может быть сложнее связать со структурой исходной программы.

ExecutionBacktrace похожи на IPEBacktrace , но используют разворачивание стека DWARF и разрешение символов; это позволяет создавать полезные отслеживания стека даже при наличии внешних вызовов, как в Haskell, так и из него. Однако для надёжного разворачивания стека вся программа (и её зависимости, как Haskell, так и нативные) должна быть скомпилирована с информацией об отладке (например, с использованием флага -g GHC).

Механизмы отслеживания стека

data BacktraceMechanism Source

Как собрать отслеживание стека, когда выбрасывается исключение.

Конструкторы

CostCentreBacktrace

собрать отслеживания стека центров затрат (доступны только при сборке с профилированием)

HasCallStackBacktrace

собрать отслеживания HasCallStack

ExecutionBacktrace

собрать отслеживания стека с помощью разворачивания нативного стека выполнения (например, используя информацию отладки DWARF)

IPEBacktrace

собрать отслеживания стека из записей таблицы информации о происхождении

getBacktraceMechanismState :: BacktraceMechanism -> IO Bool Source

Будет ли данный BacktraceMechanism использован при сборе отслеживаний стека?

setBacktraceMechanismState :: BacktraceMechanism -> Bool -> IO () Source

Установить, будет ли данный BacktraceMechanism использован при сборе отслеживаний стека?

Сбор отслеживаний стека

data Backtraces Source

Коллекция отслеживаний стека.

Примеры
Детали примеров
ExceptionAnnotation Backtraces Source
Детали примера

Определено в GHC.Internal.Exception.Backtrace

Методы

displayExceptionAnnotation :: Backtraces -> String Source

displayBacktraces :: Backtraces -> String Source

Вывод набора отслеживаний стека в удобочитаемую строку.

collectBacktraces :: (?callStack :: CallStack) => IO Backtraces Source

Собрать набор Backtraces.

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.12.1/docs/libraries/base-4.21.0.0-8e62/Control-Exception-Backtrace.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API