الفرق بين المراجعتين لصفحة: «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 class]]
[[تصنيف: Ruby TracePoint]]
يوفر الصنف <code>TracePoint</code> وظائف <code>[[Ruby/Kernel/set_trace_func|Kernel.set_trace_func]]</code> على شكل واجهة برمجية كائنية (Object-Oriented API).


مثال
== مثال ==
<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: سطر 14:
#=> 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>
 
إذا لم تقم بتحديد نوع الأحداث التي تريد الاستماع إليها، فسوف يشمل المتعقب <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>
== الأحداث ==
إذا لم تحدِّد نوع الأحداث التي تريد الاستماع إليها، فسيشمل المتعقب <code>TracePoint</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|المهمة الفرعية]]
==توابع الصنف العامة==
===[[Ruby/TracePoint/new |<code>new</code>]]===
ينشئ [[Ruby/TracePoint|متعقبًا]] جديدًا غير مفعَّل افتراضيًّا.
===[[Ruby/TracePoint/stat |<code>stat</code>]]===
يُعيد المعلومات الداخلية للمتعقب.
===[[Ruby/TracePoint/trace |<code>trace</code>]]===
ينشِّط التعقب تلقائيًا وهو ملائم للتابع <code>[[Ruby/TracePoint/new|new]]</code>.


<code>:fiber_switch</code>
== توابع النسخة العامة ==


ربط الحدث بتبديل [[Ruby/Fiber|الألياف]]
===[[Ruby/TracePoint/binding |<code>binding</code>]]===
==توابع الصنف العامة (Public Class Methods)==
يُعيد كائن الربط (binding object) الذي تم إنشاؤه من الحدث.
===[[Ruby/TracePoint/new | التابع new]]===
===[[Ruby/TracePoint/callee_id |<code>callee_id</code>]]===
يُعيد التابع <code>new</code> [[Ruby/TracePoint|متعقب]]ا<code>[[Ruby/TracePoint|TracePoint]]</code> جديدًا، غير متاح افتراضيا.
يُعيد اسم الاستدعاء الخاص بالتابع الذي يتم استدعاؤه.
===[[Ruby/TracePoint/stat | التابع stat]]===
===[[Ruby/TracePoint/defined_class |<code>defined_class</code>]]===
يُعيد التابع <code>stat</code> المعلومات الداخلية لل[[Ruby/TracePoint|متعقب]] <code>[[Ruby/TracePoint|TracePoint]]</code>.
يُعيد صنف أو وحدة التابع المُستدعى.
===[[Ruby/TracePoint/trace | التابع trace]]===
===[[Ruby/TracePoint/disable |<code>disable</code>]]===
طريقة ملائمة للتابع <code>[[Ruby/TracePoint/new|::new]]</code>، حيث تقوم بتنشيط التعقب تلقائيًا.
يعطل التعقب.
===[[Ruby/TracePoint/binding | التابع binding]]===
===[[Ruby/TracePoint/enable |<code>enable</code>]]===
يُعيد التابع <code>binding</code> كائن الربط (generated binding object) الذي تم إنشاؤه من الحدث
يفعِّل التعقب.
===[[Ruby/TracePoint/callee_id | التابع callee_id]]===
===[[Ruby/TracePoint/enabled-3F |<code>enabled?‎</code>]]===
يُعيد التابع <code>callee_id</code> اسم الاستدعاء الخاص بالتابع الذي يتم استدعاؤه
يتحقق من الوضع الحالي للتعقب.
===[[Ruby/TracePoint/defined_class | التابع defined_class]]===
===[[Ruby/TracePoint/event |<code>event</code>]]===
يُعيد التابع <code>defined_class</code> صنف أو وحدة التابع الذي يتم استدعاؤه.
يعيد نوع الحدث التي يجري تعقبه.
===[[Ruby/TracePoint/disable | التابع disable]]===
===[[Ruby/TracePoint/inspect |<code>inspect</code>]]===
يعطل التابع <code>disable</code> التعقب.
يُعيد [[Ruby/String|سلسلة نصية]] تحتوي حالة الكائن <code>TracePoint</code> الذي استُدعي معه وفق صيغة قابلة للقراءة.
===[[Ruby/TracePoint/enable | التابع enable]]===
===[[Ruby/TracePoint/lineno |<code>lineno</code>]]===
ينشط التابع <code>enable</code> التعقب.
يعيد رقم سطر الحدث التي يجري تعقبه.
===[[Ruby/TracePoint/enabled-3F | التابع enabled?‎]]===
===[[Ruby/TracePoint/method_id |<code>method_id</code>]]===
يتحقق التابع <code>enabled?‎</code> من الوضع الحالي للتعقب
يعيد الاسم المعطى ساعة تعريف التابع المُستدعى.
===[[Ruby/TracePoint/event | التابع event]]===
===[[Ruby/TracePoint/path |<code>path</code>]]===
نوع الحدث
يعيد مسار الملف الجاري تنفيذه.
===[[Ruby/TracePoint/inspect | التابع inspect]]===
===[[Ruby/TracePoint/raised_exception |<code>raised_exception</code>]]===
يُعيد التابع <code>inspect</code> [[Ruby/String|سلسلة نصية]] تحتوي حالة [[Ruby/TracePoint|المتعقب]] <code>[[Ruby/TracePoint|TracePoint]]</code> وفق صيغة قابلة للقراءة.
يعيد قيمة الاستثناء الذي تم إطلاقه في الحدث <code>raise:</code>.
===[[Ruby/TracePoint/lineno | التابع lineno]]===
===[[Ruby/TracePoint/return_value |<code>return_value</code>]]===
رقم سطر الحدث
يُعيد قيمة الحدث <code>:return</code> و <code>c_return</code> و <code>b_return</code>.
===[[Ruby/TracePoint/method_id | التابع method_id]]===
===[[Ruby/TracePoint/self |<code>self</code>]]===
يعيد التابع <code>method_id</code> الاسم المعطى ساعة تعريف التابع المُستدعى.
يُعيد كائن التعقب (trace object) الذي تم إنشاؤه من الحدث.
===[[Ruby/TracePoint/path | التابع path]]===
مسار الملف الجاري تنفيذه
===[[Ruby/TracePoint/raised_exception | التابع raised_exception]]===
القيمة من الاستثناء الذي تم إطلاقه في الحدث <code>:raise</code>
===[[Ruby/TracePoint/return_value | التابع return_value]]===
يُعيد التابع <code>return_value</code> قيمة من الحدث <code>:return</code> و <code>c_return</code> و <code>b_return</code>
===[[Ruby/TracePoint/self | التابع self]]===
يُعيد التابع <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 في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 06:03، 8 ديسمبر 2018

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

مثال

يمكننا استخدام المتعقبات (كائنات الصنف 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>]‎

الأحداث

إذا لم تحدِّد نوع الأحداث التي تريد الاستماع إليها، فسيشمل المتعقب 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) الألياف.

توابع الصنف العامة

new

ينشئ متعقبًا جديدًا غير مفعَّل افتراضيًّا.

stat

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

trace

ينشِّط التعقب تلقائيًا وهو ملائم للتابع new.

توابع النسخة العامة

binding

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

callee_id

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

defined_class

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

disable

يعطل التعقب.

enable

يفعِّل التعقب.

enabled?‎

يتحقق من الوضع الحالي للتعقب.

event

يعيد نوع الحدث التي يجري تعقبه.

inspect

يُعيد سلسلة نصية تحتوي حالة الكائن TracePoint الذي استُدعي معه وفق صيغة قابلة للقراءة.

lineno

يعيد رقم سطر الحدث التي يجري تعقبه.

method_id

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

path

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

raised_exception

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

return_value

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

self

يُعيد كائن التعقب (trace object) الذي تم إنشاؤه من الحدث.

مصادر