Документация Engee

Трассировка стека

# Base.StackTraces.StackFrameType

StackFrame

Информация о стеке, которая представляет контекст выполнения, содержащая следующие поля:

  • func::Symbol

    Имя функции, которая содержит контекст выполнения.

  • linfo::Union{Core.MethodInstance, CodeInfo, Nothing}

    MethodInstance, который содержит контекст выполнения (если доступен при поиске).

  • file::Symbol

    Путь к файлу, который содержит контекст выполнения.

  • line::Int

    Номер строки в файле, который содержит контекст выполнения.

  • from_c::Bool

    Значение равно true, если используется код из C.

  • inlined::Bool

    Значение равно true, если используется код из встраиваемого фрейма.

  • pointer::UInt64

    Представление адресной ссылки на контекст выполнения возвращается backtrace.

# Base.StackTraces.StackTraceType

StackTrace

Псевдоним для Vector{StackFrame} указывается для удобства; возвращается вызовами stacktrace.

# Base.StackTraces.stacktraceFunction

stacktrace([trace::Vector{Ptr{Cvoid}},] [c_funcs::Bool=false]) -> StackTrace

Возвращает трассировку стека в виде вектора StackFrame (по умолчанию трассировка стека не возвращает функции С, но эту возможность можно включить отдельно). При вызове без указания трассировки stacktrace сначала вызывает backtrace.

Приведенные ниже методы и типы в Base.StackTraces не экспортируются, и их необходимо вызывать, например, так: StackTraces.lookup(ptr).

# Base.StackTraces.lookupFunction

lookup(pointer::Ptr{Cvoid}) -> Vector{StackFrame}

Учитывая адресную ссылку на контекст выполнения (обычно создается вызовом к backtrace), выполняет поиск по контекстной информации фрейма стека. Возвращает массив информации о фрейме для всех функций, встраиваемых на данном этапе (первой идет самая дальняя внутренняя функция).

# Base.StackTraces.remove_frames!Function

remove_frames!(stack::StackTrace, name::Symbol)

Принимает StackTrace (вектор StackFrames), а также имя функции (Symbol) и удаляет StackFrame, заданный именем функции из StackTrace (также удаляются все фреймы над указанной функцией). В основном используется для удаления функций StackTraces из StackTrace до их возвращения.

remove_frames!(stack::StackTrace, m::Module)

Возвращает StackTrace с удалением всех StackFrame из предоставленных Module.