スタックトレース
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
── 型
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
から取り除くのに使われていました。