スタックトレース

Base.StackTraces.StackFrame ── 型

StackFrame

実行コンテキストを表すスタックの情報です。次のフィールドを持ちます:

  • func::Symbol

    実行コンテキストを含む関数の名前

  • linfo::Union{Core.MethodInstance, CodeInfo, Nothing}

    実行コンテキストを含む MethodInstance (見つかる場合のみ)

  • 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 のベクトルとして返します。デフォルトではスタックトレースに C 関数を含みませんが、省略可能引数 c_funcstrue にすれば含めるようにできます。スタックトレースを指定せずに呼び出すと、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 (StackFrame のベクトル) と関数名を表す Symbol を受け取り、その関数名で指定される StackFrame を与えられた StackTrace から取り除きます (指定した関数より上のフレームも全て取り除かれます)。元々 StackTraces に関連する関数を StackTrace から取り除くのに使われていました。

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

Module に含まれる StackFrameStackTrace から取り除きます。

広告