Engee 文档

堆栈跟踪

StackFrame

表示执行上下文的堆栈信息,包含以下字段:

  • 'func::符号`

    包含执行上下文的函数的名称。

  • 'linfo::联盟{Core.MethodInstance, Method, Module, Core.CodeInfo, Nothing}`

    包含执行上下文的MethodInstance或CodeInfo对象(如果在搜索期间可用),或模块对象(用于扩展宏)。

  • '文件::符号`

    包含执行上下文的文件的路径。

  • '行::Int`

    包含执行上下文的文件中的行号。

  • 'from_c::Bool`

    如果使用来自C的代码,则该值为true。

  • '内联::Bool`

    如果使用嵌入帧中的代码,则该值设置为true。

  • '指针::UInt64`

    对执行上下文的地址引用的表示由`backtrace’返回。

StackTrace

`向量的别名{StackFrame}',提供方便;通过调用返回’stacktrace'。

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

返回堆栈跟踪作为`StackFrame`对象的向量(默认情况下,堆栈跟踪不返回C函数,但可以单独启用此功能)。 当调用而不指定跟踪时,'stacktrace’首先调用’backtrace'。

下面列出的方法和类型在’基地。StackTraces’不被导出,它们必须被调用,例如,像这样’StackTraces。查找(ptr)'。

lookup(pointer::Ptr{Cvoid}) -> Vector{StackFrame}

对于对执行上下文的给定引用(通常通过调用’backtrace’创建),它通过堆栈帧的上下文信息进行搜索。 返回有关在此阶段嵌入的所有函数的帧的信息数组(最远的内部函数排在第一位)。

remove_frames!(stack::StackTrace, name::Symbol)

接受’StackTrace'(向量’StackFrames'),以及函数名(符号),并从`StackTrace`中删除函数名指定的`StackFrame'(指定函数以上的所有帧也被删除)。 它主要用于在返回`StackTrace’之前从`StackTrace`中删除’Stacktrace’函数。


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

返回一个’StackTrace',其中从提供的’模块`中删除了所有’stackframes'。