栈跟踪
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。