StackTraces

Base.StackTraces.StackFrameType
StackFrame

معلومات المكدس تمثل سياق التنفيذ، مع الحقول التالية:

  • 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.

source
Base.StackTraces.StackTraceType
StackTrace

اسم مستعار لـ Vector{StackFrame} تم توفيره للراحة؛ يتم إرجاعه بواسطة استدعاءات stacktrace.

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

إرجاع تتبع المكدس في شكل متجه من StackFrames. (بشكل افتراضي، لا يُرجع stacktrace دوال C، ولكن يمكن تمكين ذلك.) عند استدعائه دون تحديد تتبع، يقوم stacktrace أولاً باستدعاء backtrace.

source

الطرق والأنواع التالية في Base.StackTraces غير مصدرة وتحتاج إلى أن تُستدعى مثل StackTraces.lookup(ptr).

Base.StackTraces.lookupFunction
lookup(pointer::Ptr{Cvoid}) -> Vector{StackFrame}

بالنظر إلى مؤشر إلى سياق التنفيذ (الذي يتم إنشاؤه عادةً بواسطة استدعاء backtrace)، يبحث في معلومات سياق إطار المكدس. يُرجع مصفوفة من معلومات الإطار لجميع الدوال المضمنة في تلك النقطة، بدءًا من الدالة الأكثر عمقًا.

source
Base.StackTraces.remove_frames!Function
remove_frames!(stack::StackTrace, name::Symbol)

يأخذ StackTrace (وهو متجه من StackFrames) واسم دالة (وهو Symbol) ويزيل StackFrame المحدد بواسطة اسم الدالة من StackTrace (كما يزيل جميع الإطارات فوق الدالة المحددة). يُستخدم بشكل أساسي لإزالة StackTraces الدوال من StackTrace قبل إرجاعه.

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

إرجاع StackTrace مع إزالة جميع StackFrames من Module المقدم.

source