الفرق بين المراجعتين ل"Ruby/TracePoint"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>TracePoint</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby TracePointيوفر الصن...')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>TracePoint</code> في روبي}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>TracePoint</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
[[تصنيف: Ruby TracePoint]]يوفر الصنف [[Ruby/TracePoint|TracePoint]] وظائف <code>[[Ruby/Kernel/set_trace_func|Kernel#set_trace_func]]</code> في واجهة برمجية كائنية (Object-Oriented).
+
[[تصنيف: Ruby TracePoint]]
 +
يوفر الصنف [[Ruby/TracePoint|TracePoint]] وظائف <code>[[Ruby/Kernel/set_trace_func|Kernel#set_trace_func]]</code> على شكل واجهة برمجية كائنية (Object-Oriented).
  
مثال
+
== مثال ==
<code>[[Ruby//class-TracePoint-label-Example|¶]]</code> <code>[[Ruby//top|↑]]</code>
+
يمكننا استخدام المتعقبات (كائنات الصنف <code>TracePoint</code>) لجمع المعلومات بخصوص الاستثناءات:
 
 
يمكننا استخدام المتعقبات (كائن من الصنف <code>TracePoint</code>) لجمع المعلومات بخصوص الاستثناءات:
 
 
<syntaxhighlight lang="ruby">trace = TracePoint.new(:raise) do |tp|
 
<syntaxhighlight lang="ruby">trace = TracePoint.new(:raise) do |tp|
 
     p [tp.lineno, tp.event, tp.raised_exception]
 
     p [tp.lineno, tp.event, tp.raised_exception]
سطر 14: سطر 13:
 
#=> false
 
#=> false
 
0 / 0
 
0 / 0
#=> [5, :raise, #<ZeroDivisionError: divided by 0>]‎</syntaxhighlight>
+
#=> [5, :raise, #<ZeroDivisionError: divided by 0>]‎</syntaxhighlight>
الأحداث (Events)
 
<code>[[Ruby//class-TracePoint-label-Events|¶]]</code> <code>[[Ruby//top|↑]]</code>
 
  
 +
== الأحداث (Events) ==
 
إذا لم تقم بتحديد نوع الأحداث التي تريد الاستماع إليها، فسوف يشمل المتعقب <code>TracePoint</code> جميع الأحداث المتاحة.
 
إذا لم تقم بتحديد نوع الأحداث التي تريد الاستماع إليها، فسوف يشمل المتعقب <code>TracePoint</code> جميع الأحداث المتاحة.
  
ملحوظة
+
'''ملحوظة''': لا تعتمد على مجموعة الأحداث الحالية، حيث أن هذه القائمة عرضة للتغيير. بدلاً من ذلك، يُنصح بتحديد نوع الأحداث التي تريد استخدامها.
لا تعتمد على مجموعة الأحداث الحالية، حيث أن هذه القائمة عرضة للتغيير. بدلاً من ذلك، يُنصح بتحديد نوع الأحداث التي تريد استخدامها.
 
 
 
لتصفية الأحداث التي تريد تعقبها، يمكنك تمرير أي من الخيارات التالية كأحداث (<code>events</code>):
 
 
 
<code>:line</code>
 
 
 
تنفيذ التعليمات البرمجية في سطر جديد
 
 
 
<code>:class</code>
 
 
 
بدء تعريف صنف أو وحدة
 
 
 
<code>:end</code>
 
 
 
إنهاء تعربف صنف أو وحدة
 
 
 
<code>:call</code>
 
 
 
استدعاء تابع من توابع روبي
 
 
 
<code>:return</code>
 
 
 
العودة من تابع من توابع روبي
 
 
 
<code>:c_call</code>
 
 
 
استدعاء روتين (routine) من لغة C
 
 
 
<code>:c_return</code>
 
 
 
العودة من روتين من لغة C
 
 
 
<code>:raise</code>
 
 
 
إطلاق استثناء
 
 
 
<code>:b_call</code>
 
 
 
ربط الحدث ببداية الكتلة البرمجية
 
 
 
<code>:b_return</code>
 
 
 
ربط الحدث بنهاية الكتلة البرمجية
 
 
 
<code>:thread_begin</code>
 
 
 
ربط الحدث ببداية [[Ruby/Thread|المهمة الفرعية]]
 
  
<code>:thread_end</code>
+
لتصفية الأحداث التي تريد تعقبها، يمكنك تمرير أي من الخيارات التالية كوسيط <code>events</code>:
 +
* ‎<code>:line</code> - تنفيذ التعليمات البرمجية في سطر جديد
 +
* ‎<code>:class</code> - بدء تعريف صنف أو وحدة
 +
* ‎<code>:end</code> - إنهاء تعربف صنف أو وحدة
 +
* ‎<code>:call</code> - استدعاء تابع من توابع روبي
 +
* ‎‎<code>:return</code> - العودة من تابع من توابع روبي
 +
* ‎<code>:c_call</code> - استدعاء روتين (routine) من لغة C
 +
* ‎<code>:c_return</code> - العودة من روتين من لغة C
 +
* ‎<code>:raise</code> - إطلاق استثناء
 +
* ‎<code>:b_call</code> - ربط الحدث ببداية الكتلة البرمجية
 +
* ‎<code>:b_return</code> - ربط الحدث بنهاية الكتلة البرمجية
 +
* ‎<code>:thread_begin</code> - ربط الحدث ببداية [[Ruby/Thread|المهمة الفرعية]]
 +
* ‎<code>:thread_end</code> - ربط الحدث ينهاية [[Ruby/Thread|المهمة الفرعية]]
 +
* ‎<code>:fiber_switch</code> - ربط الحدث بتبديل (switch) [[Ruby/Fiber|الألياف]]
  
ربط الحدث ينهاية [[Ruby/Thread|المهمة الفرعية]]
 
 
<code>:fiber_switch</code>
 
 
ربط الحدث بتبديل [[Ruby/Fiber|الألياف]]
 
 
==توابع الصنف العامة (Public Class Methods)==
 
==توابع الصنف العامة (Public Class Methods)==
 
===[[Ruby/TracePoint/new | التابع new]]===
 
===[[Ruby/TracePoint/new | التابع new]]===
يُعيد التابع <code>new</code> [[Ruby/TracePoint|متعقب]]ا<code>[[Ruby/TracePoint|TracePoint]]</code> جديدًا، غير متاح افتراضيا.
+
يُعيد التابع <code>new</code> [[Ruby/TracePoint|متعقب]]ا جديدًا.
 
===[[Ruby/TracePoint/stat | التابع stat]]===
 
===[[Ruby/TracePoint/stat | التابع stat]]===
يُعيد التابع <code>stat</code> المعلومات الداخلية لل[[Ruby/TracePoint|متعقب]] <code>[[Ruby/TracePoint|TracePoint]]</code>.
+
يُعيد التابع <code>stat</code> المعلومات الداخلية لل[[Ruby/TracePoint|متعقب]].
 
===[[Ruby/TracePoint/trace | التابع trace]]===
 
===[[Ruby/TracePoint/trace | التابع trace]]===
طريقة ملائمة للتابع <code>[[Ruby/TracePoint/new|::new]]</code>، حيث تقوم بتنشيط التعقب تلقائيًا.
+
ملائم لللتابع <code>[[Ruby/TracePoint/new|new]]</code>، حيث يقوم بتنشيط التعقب تلقائيًا.
 +
 
 +
== توابع النسخة العامة (Public Instance Methods) ==
 +
 
 
===[[Ruby/TracePoint/binding | التابع binding]]===
 
===[[Ruby/TracePoint/binding | التابع binding]]===
 
يُعيد التابع <code>binding</code> كائن الربط (generated binding object) الذي تم إنشاؤه من الحدث
 
يُعيد التابع <code>binding</code> كائن الربط (generated binding object) الذي تم إنشاؤه من الحدث
سطر 88: سطر 50:
 
يُعيد التابع <code>callee_id</code> اسم الاستدعاء الخاص بالتابع الذي يتم استدعاؤه
 
يُعيد التابع <code>callee_id</code> اسم الاستدعاء الخاص بالتابع الذي يتم استدعاؤه
 
===[[Ruby/TracePoint/defined_class | التابع defined_class]]===
 
===[[Ruby/TracePoint/defined_class | التابع defined_class]]===
يُعيد التابع <code>defined_class</code> صنف أو وحدة التابع الذي يتم استدعاؤه.
+
يُعيد التابع <code>defined_class</code> صنف أو وحدة التابع المستدعى.
 
===[[Ruby/TracePoint/disable | التابع disable]]===
 
===[[Ruby/TracePoint/disable | التابع disable]]===
 
يعطل التابع <code>disable</code> التعقب.
 
يعطل التابع <code>disable</code> التعقب.
سطر 96: سطر 58:
 
يتحقق التابع <code>enabled?‎</code> من الوضع الحالي للتعقب
 
يتحقق التابع <code>enabled?‎</code> من الوضع الحالي للتعقب
 
===[[Ruby/TracePoint/event | التابع event]]===
 
===[[Ruby/TracePoint/event | التابع event]]===
نوع الحدث
+
يعيد نوع الحدث
 
===[[Ruby/TracePoint/inspect | التابع inspect]]===
 
===[[Ruby/TracePoint/inspect | التابع inspect]]===
يُعيد التابع <code>inspect</code> [[Ruby/String|سلسلة نصية]] تحتوي حالة [[Ruby/TracePoint|المتعقب]] <code>[[Ruby/TracePoint|TracePoint]]</code> وفق صيغة قابلة للقراءة.
+
يُعيد التابع <code>inspect</code> [[Ruby/String|سلسلة نصية]] تحتوي حالة [[Ruby/TracePoint|المتعقب]] وفق صيغة قابلة للقراءة.
 
===[[Ruby/TracePoint/lineno | التابع lineno]]===
 
===[[Ruby/TracePoint/lineno | التابع lineno]]===
رقم سطر الحدث
+
يعيد رقم سطر الحدث
 
===[[Ruby/TracePoint/method_id | التابع method_id]]===
 
===[[Ruby/TracePoint/method_id | التابع method_id]]===
يعيد التابع <code>method_id</code> الاسم المعطى ساعة تعريف التابع المُستدعى.
+
يعيد <code>method_id</code> الاسم المعطى ساعة تعريف التابع المُستدعى.
 
===[[Ruby/TracePoint/path | التابع path]]===
 
===[[Ruby/TracePoint/path | التابع path]]===
مسار الملف الجاري تنفيذه
+
يعيد مسار الملف الجاري تنفيذه
 
===[[Ruby/TracePoint/raised_exception | التابع raised_exception]]===
 
===[[Ruby/TracePoint/raised_exception | التابع raised_exception]]===
القيمة من الاستثناء الذي تم إطلاقه في الحدث <code>:raise</code>
+
يعيد قيمة الاستثناء الذي تم إطلاقه في الحدث <code>:raise</code>
 
===[[Ruby/TracePoint/return_value | التابع return_value]]===
 
===[[Ruby/TracePoint/return_value | التابع return_value]]===
يُعيد التابع <code>return_value</code> قيمة من الحدث <code>:return</code> و <code>c_return</code> و <code>b_return</code>
+
يُعيد التابع <code>return_value</code> قيمة الحدث <code>:return</code> و <code>c_return</code> و <code>b_return</code>
 
===[[Ruby/TracePoint/self | التابع self]]===
 
===[[Ruby/TracePoint/self | التابع self]]===
يُعيد التابع <code>self</code> كائن التعقب (trace object) خلال الحدث
+
يُعيد التابع <code>self</code> كائن التعقب (trace object)
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/TracePoint.html قسم  الصنف TracePoint في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/TracePoint.html قسم  الصنف TracePoint في توثيق روبي الرسمي.]

مراجعة 23:11، 7 نوفمبر 2018

يوفر الصنف TracePoint وظائف Kernel#set_trace_func على شكل واجهة برمجية كائنية (Object-Oriented).

مثال

يمكننا استخدام المتعقبات (كائنات الصنف TracePoint) لجمع المعلومات بخصوص الاستثناءات:

trace = TracePoint.new(:raise) do |tp|
    p [tp.lineno, tp.event, tp.raised_exception]
end
#=> #<TracePoint:disabled>
trace.enable
#=> false
0 / 0
#=> [5, :raise, #<ZeroDivisionError: divided by 0>]‎

الأحداث (Events)

إذا لم تقم بتحديد نوع الأحداث التي تريد الاستماع إليها، فسوف يشمل المتعقب TracePoint جميع الأحداث المتاحة.

ملحوظة: لا تعتمد على مجموعة الأحداث الحالية، حيث أن هذه القائمة عرضة للتغيير. بدلاً من ذلك، يُنصح بتحديد نوع الأحداث التي تريد استخدامها.

لتصفية الأحداث التي تريد تعقبها، يمكنك تمرير أي من الخيارات التالية كوسيط events:

  • :line - تنفيذ التعليمات البرمجية في سطر جديد
  • :class - بدء تعريف صنف أو وحدة
  • :end - إنهاء تعربف صنف أو وحدة
  • :call - استدعاء تابع من توابع روبي
  • ‎‎:return - العودة من تابع من توابع روبي
  • :c_call - استدعاء روتين (routine) من لغة C
  • :c_return - العودة من روتين من لغة C
  • :raise - إطلاق استثناء
  • :b_call - ربط الحدث ببداية الكتلة البرمجية
  • :b_return - ربط الحدث بنهاية الكتلة البرمجية
  • :thread_begin - ربط الحدث ببداية المهمة الفرعية
  • :thread_end - ربط الحدث ينهاية المهمة الفرعية
  • :fiber_switch - ربط الحدث بتبديل (switch) الألياف

توابع الصنف العامة (Public Class Methods)

التابع new

يُعيد التابع new متعقبا جديدًا.

التابع stat

يُعيد التابع stat المعلومات الداخلية للمتعقب.

التابع trace

ملائم لللتابع new، حيث يقوم بتنشيط التعقب تلقائيًا.

توابع النسخة العامة (Public Instance Methods)

التابع binding

يُعيد التابع binding كائن الربط (generated binding object) الذي تم إنشاؤه من الحدث

التابع callee_id

يُعيد التابع callee_id اسم الاستدعاء الخاص بالتابع الذي يتم استدعاؤه

التابع defined_class

يُعيد التابع defined_class صنف أو وحدة التابع المستدعى.

التابع disable

يعطل التابع disable التعقب.

التابع enable

ينشط التابع enable التعقب.

التابع enabled?‎

يتحقق التابع enabled?‎ من الوضع الحالي للتعقب

التابع event

يعيد نوع الحدث

التابع inspect

يُعيد التابع inspect سلسلة نصية تحتوي حالة المتعقب وفق صيغة قابلة للقراءة.

التابع lineno

يعيد رقم سطر الحدث

التابع method_id

يعيد method_id الاسم المعطى ساعة تعريف التابع المُستدعى.

التابع path

يعيد مسار الملف الجاري تنفيذه

التابع raised_exception

يعيد قيمة الاستثناء الذي تم إطلاقه في الحدث ‎:raise

التابع return_value

يُعيد التابع return_value قيمة الحدث ‎:return و c_return و b_return

التابع self

يُعيد التابع self كائن التعقب (trace object)

مصادر