栈跟踪
Base.StackTraces.StackFrame
— 类型StackFrame
表示执行上下文的栈信息,包含以下字段
func::Symbol
包含执行上下文的函数名称。
linfo::Union{Core.MethodInstance, Method, Module, Core.CodeInfo, Nothing}
包含执行上下文的 MethodInstance 或 CodeInfo(如果能找到),或者 Module(用于宏扩展)"
file::Symbol
包含执行上下文的的文件路径。
line::Int
包含执行上下文的行号。
from_c::Bool
如果代码来自 C,则为真。
inlined::Bool
如果代码来自内联帧,则为真。
pointer::UInt64
由
backtrace
返回的执行上下文指针的表示形式。
Base.StackTraces.StackTrace
— 类型StackTrace
为了方便起见,Vector{StackFrame}
的别名;由 stacktrace
的调用返回。
Base.StackTraces.stacktrace
— 函数stacktrace([trace::Vector{Ptr{Cvoid}},] [c_funcs::Bool=false]) -> StackTrace
以 StackFrame
向量形式返回栈跟踪。(默认情况下,stacktrace 不返回 C 函数,但可以启用。)在不指定跟踪的情况下调用时,stacktrace
首先调用 backtrace
。
Base.StackTraces
中的以下方法和类型未导出,需要例如以 StackTraces.lookup(ptr)
的方式调用。
Base.StackTraces.lookup
— 函数lookup(pointer::Ptr{Cvoid}) -> Vector{StackFrame}
给定指向执行上下文的指针(通常由对 backtrace
的调用生成),查找栈帧上下文信息。返回该点所有内联函数的帧信息数组,最内层函数优先。
Base.StackTraces.remove_frames!
— 函数remove_frames!(stack::StackTrace, name::Symbol)
获取一个 StackTrace
(StackFrames
的向量)和一个函数名称(一个 Symbol
),并从 StackTrace
中删除由函数名称指定的 StackFrame
(也删除指定函数以上的所有帧)。主要用于在返回 StackTrace
之前从 StackTrace
中删除 StackTraces
函数。
remove_frames!(stack::StackTrace, m::Module)
返回删除了来自提供的 Module
的所有 StackFrame
的 StackTrace
。