StackTraces

Base.StackTraces.StackFrameType
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返回的执行上下文指针的表示。

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

返回一个以 StackFrame 形式的堆栈跟踪向量。(默认情况下,stacktrace 不返回 C 函数,但可以启用此功能。)当不指定 trace 调用时,stacktrace 首先调用 backtrace

source

以下在 Base.StackTraces 中的方法和类型未被导出,需要以 StackTraces.lookup(ptr) 的形式调用。

Base.StackTraces.lookupFunction
lookup(pointer::Ptr{Cvoid}) -> Vector{StackFrame}

给定一个指向执行上下文的指针(通常由对 backtrace 的调用生成),查找堆栈帧上下文信息。返回一个数组,其中包含在该点内联的所有函数的帧信息,最内层的函数优先。

source
Base.StackTraces.remove_frames!Function
remove_frames!(stack::StackTrace, name::Symbol)

接受一个 StackTrace(一个 StackFrames 的向量)和一个函数名(一个 Symbol),并从 StackTrace 中移除由函数名指定的 StackFrame(同时移除指定函数之上的所有帧)。主要用于在返回之前从 StackTrace 中移除 StackTraces 函数。

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

返回 StackTrace,其中所有来自提供的 ModuleStackFrame 都被移除。

source