Трассировка стека
#
Base.StackTraces.StackFrame
— Type
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.StackTrace
— Type
StackTrace
Псевдоним для Vector{StackFrame}
указывается для удобства; возвращается вызовами stacktrace
.
#
Base.StackTraces.stacktrace
— Function
stacktrace([trace::Vector{Ptr{Cvoid}},] [c_funcs::Bool=false]) -> StackTrace
Возвращает трассировку стека в виде вектора StackFrame
(по умолчанию трассировка стека не возвращает функции С, но эту возможность можно включить отдельно). При вызове без указания трассировки stacktrace
сначала вызывает backtrace
.
Приведенные ниже методы и типы в Base.StackTraces
не экспортируются, и их необходимо вызывать, например, так: StackTraces.lookup(ptr)
.
#
Base.StackTraces.lookup
— Function
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
.