Трассировка стека
#
Base.StackTraces.StackFrame — Type
StackFrame
Информация о стеке, которая представляет контекст выполнения, содержащая следующие поля:
-
func::SymbolИмя функции, которая содержит контекст выполнения.
-
linfo::Union{Core.MethodInstance, Method, Module, Core.CodeInfo, Nothing}Объект MethodInstance или CodeInfo, который содержит контекст выполнения (если доступен при поиске), или объект Module (для расширения макросов).
-
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.