スタックトレース
Base.StackTraces.StackFrame ── 型
StackFrame
実行コンテキストを表すスタックの情報です。次のフィールドを持ちます:
-
func::Symbol実行コンテキストを含む関数の名前
-
linfo::Union{Core.MethodInstance, CodeInfo, Nothing}実行コンテキストを含む
MethodInstance(見つかる場合のみ) -
file::Symbol実行コンテキストを含むファイルのパス
-
line::Int実行コンテキストを含むファイルにおける行番号
-
from_c::BoolC のコードかどうか
-
inlined::Boolインライン化されたフレームのコードかどうか
-
pointer::UInt64backtraceが返す実行コンテキストを指すポインタの表現
Base.StackTraces.stacktrace ── 関数
stacktrace([trace::Vector{Ptr{Cvoid}},] [c_funcs::Bool=false]) -> StackTrace
スタックトレースを StackFrame のベクトルとして返します。デフォルトではスタックトレースに C 関数を含みませんが、省略可能引数 c_funcs を true にすれば含めるようにできます。スタックトレースを指定せずに呼び出すと、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 から取り除くのに使われていました。