StackTraces
Base.StackTraces.StackFrame
— TypeStackFrame
معلومات المكدس تمثل سياق التنفيذ، مع الحقول التالية:
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
.
Base.StackTraces.StackTrace
— TypeStackTrace
اسم مستعار لـ Vector{StackFrame}
تم توفيره للراحة؛ يتم إرجاعه بواسطة استدعاءات stacktrace
.
Base.StackTraces.stacktrace
— Functionstacktrace([trace::Vector{Ptr{Cvoid}},] [c_funcs::Bool=false]) -> StackTrace
إرجاع تتبع المكدس في شكل متجه من StackFrame
s. (بشكل افتراضي، لا يُرجع stacktrace دوال C، ولكن يمكن تمكين ذلك.) عند استدعائه دون تحديد تتبع، يقوم stacktrace
أولاً باستدعاء backtrace
.
الطرق والأنواع التالية في Base.StackTraces
غير مصدرة وتحتاج إلى أن تُستدعى مثل StackTraces.lookup(ptr)
.
Base.StackTraces.lookup
— Functionlookup(pointer::Ptr{Cvoid}) -> Vector{StackFrame}
بالنظر إلى مؤشر إلى سياق التنفيذ (الذي يتم إنشاؤه عادةً بواسطة استدعاء backtrace
)، يبحث في معلومات سياق إطار المكدس. يُرجع مصفوفة من معلومات الإطار لجميع الدوال المضمنة في تلك النقطة، بدءًا من الدالة الأكثر عمقًا.
Base.StackTraces.remove_frames!
— Functionremove_frames!(stack::StackTrace, name::Symbol)
يأخذ StackTrace
(وهو متجه من StackFrames
) واسم دالة (وهو Symbol
) ويزيل StackFrame
المحدد بواسطة اسم الدالة من StackTrace
(كما يزيل جميع الإطارات فوق الدالة المحددة). يُستخدم بشكل أساسي لإزالة StackTraces
الدوال من StackTrace
قبل إرجاعه.
remove_frames!(stack::StackTrace, m::Module)
إرجاع StackTrace
مع إزالة جميع StackFrame
s من Module
المقدم.