الفرق بين المراجعتين لصفحة: «Ruby/TracePoint»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: | <noinclude>{{DISPLAYTITLE:الصنف <code>TracePoint</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby class]] | |||
[[تصنيف: Ruby TracePoint]] | [[تصنيف: Ruby TracePoint]] | ||
يوفر الصنف | يوفر الصنف <code>TracePoint</code> وظائف <code>[[Ruby/Kernel/set_trace_func|Kernel.set_trace_func]]</code> على شكل واجهة برمجية كائنية (Object-Oriented API). | ||
== مثال == | == مثال == | ||
سطر 15: | سطر 16: | ||
#=> [5, :raise, #<ZeroDivisionError: divided by 0>]</syntaxhighlight> | #=> [5, :raise, #<ZeroDivisionError: divided by 0>]</syntaxhighlight> | ||
== الأحداث | == الأحداث == | ||
إذا لم | إذا لم تحدِّد نوع الأحداث التي تريد الاستماع إليها، فسيشمل المتعقب <code>TracePoint</code> جميع الأحداث المتاحة. | ||
'''ملحوظة''': لا تعتمد على مجموعة الأحداث الحالية، | '''ملحوظة''': لا تعتمد على مجموعة الأحداث الحالية، إذ أن هذه القائمة عرضةٌ للتغيير. بدلًا من ذلك، يُنصَح بتحديد نوع الأحداث التي تريد استخدامها. | ||
لترشيح الأحداث التي تريد تعقبها، يمكنك تمرير أي من الخيارات التالية كوسيط <code>events</code>: | |||
* <code>:line</code> - تنفيذ التعليمات البرمجية في سطر جديد | * <code>:line</code> - تنفيذ التعليمات البرمجية في سطر جديد. | ||
* <code>:class</code> - بدء تعريف صنف أو وحدة | * <code>:class</code> - بدء تعريف صنف أو وحدة. | ||
* <code>:end</code> - إنهاء | * <code>:end</code> - إنهاء تعريف صنف أو وحدة. | ||
* <code>:call</code> - استدعاء تابع من توابع روبي | * <code>:call</code> - استدعاء تابع من توابع روبي. | ||
* <code>:return</code> - العودة من تابع من توابع روبي | * <code>:return</code> - العودة من تابع من توابع روبي. | ||
* <code>:c_call</code> - استدعاء | * <code>:c_call</code> - استدعاء برنامج (routine) من لغة C. | ||
* <code>:c_return</code> - العودة من روتين من لغة C | * <code>:c_return</code> - العودة من روتين من لغة C. | ||
* <code>:raise</code> - إطلاق استثناء | * <code>:raise</code> - إطلاق استثناء. | ||
* <code>:b_call</code> - ربط الحدث ببداية الكتلة البرمجية | * <code>:b_call</code> - ربط الحدث ببداية الكتلة البرمجية. | ||
* <code>:b_return</code> - ربط الحدث بنهاية الكتلة البرمجية | * <code>:b_return</code> - ربط الحدث بنهاية الكتلة البرمجية. | ||
* <code>:thread_begin</code> - ربط الحدث ببداية [[Ruby/Thread| | * <code>:thread_begin</code> - ربط الحدث ببداية [[Ruby/Thread|مهمة فرعية]]. | ||
* <code>:thread_end</code> - ربط الحدث ينهاية [[Ruby/Thread| | * <code>:thread_end</code> - ربط الحدث ينهاية [[Ruby/Thread|مهمة فرعية]]. | ||
* <code>:fiber_switch</code> - ربط الحدث بتبديل (switch) [[Ruby/Fiber|الألياف]] | * <code>:fiber_switch</code> - ربط الحدث بتبديل (switch) [[Ruby/Fiber|الألياف]]. | ||
==توابع الصنف العامة | ==توابع الصنف العامة== | ||
===[[Ruby/TracePoint/new | | ===[[Ruby/TracePoint/new |<code>new</code>]]=== | ||
ينشئ [[Ruby/TracePoint|متعقبًا]] جديدًا غير مفعَّل افتراضيًّا. | |||
===[[Ruby/TracePoint/stat | | ===[[Ruby/TracePoint/stat |<code>stat</code>]]=== | ||
يُعيد | يُعيد المعلومات الداخلية للمتعقب. | ||
===[[Ruby/TracePoint/trace | | ===[[Ruby/TracePoint/trace |<code>trace</code>]]=== | ||
ملائم | ينشِّط التعقب تلقائيًا وهو ملائم للتابع <code>[[Ruby/TracePoint/new|new]]</code>. | ||
== توابع النسخة العامة | == توابع النسخة العامة == | ||
===[[Ruby/TracePoint/binding | | ===[[Ruby/TracePoint/binding |<code>binding</code>]]=== | ||
يُعيد | يُعيد كائن الربط (binding object) الذي تم إنشاؤه من الحدث. | ||
===[[Ruby/TracePoint/callee_id | | ===[[Ruby/TracePoint/callee_id |<code>callee_id</code>]]=== | ||
يُعيد | يُعيد اسم الاستدعاء الخاص بالتابع الذي يتم استدعاؤه. | ||
===[[Ruby/TracePoint/defined_class | | ===[[Ruby/TracePoint/defined_class |<code>defined_class</code>]]=== | ||
يُعيد | يُعيد صنف أو وحدة التابع المُستدعى. | ||
===[[Ruby/TracePoint/disable | | ===[[Ruby/TracePoint/disable |<code>disable</code>]]=== | ||
يعطل | يعطل التعقب. | ||
===[[Ruby/TracePoint/enable | | ===[[Ruby/TracePoint/enable |<code>enable</code>]]=== | ||
يفعِّل التعقب. | |||
===[[Ruby/TracePoint/enabled-3F | | ===[[Ruby/TracePoint/enabled-3F |<code>enabled?</code>]]=== | ||
يتحقق | يتحقق من الوضع الحالي للتعقب. | ||
===[[Ruby/TracePoint/event | | ===[[Ruby/TracePoint/event |<code>event</code>]]=== | ||
يعيد نوع الحدث | يعيد نوع الحدث التي يجري تعقبه. | ||
===[[Ruby/TracePoint/inspect | | ===[[Ruby/TracePoint/inspect |<code>inspect</code>]]=== | ||
يُعيد | يُعيد [[Ruby/String|سلسلة نصية]] تحتوي حالة الكائن <code>TracePoint</code> الذي استُدعي معه وفق صيغة قابلة للقراءة. | ||
===[[Ruby/TracePoint/lineno | | ===[[Ruby/TracePoint/lineno |<code>lineno</code>]]=== | ||
يعيد رقم سطر الحدث | يعيد رقم سطر الحدث التي يجري تعقبه. | ||
===[[Ruby/TracePoint/method_id | | ===[[Ruby/TracePoint/method_id |<code>method_id</code>]]=== | ||
يعيد | يعيد الاسم المعطى ساعة تعريف التابع المُستدعى. | ||
===[[Ruby/TracePoint/path | | ===[[Ruby/TracePoint/path |<code>path</code>]]=== | ||
يعيد مسار الملف الجاري تنفيذه | يعيد مسار الملف الجاري تنفيذه. | ||
===[[Ruby/TracePoint/raised_exception | | ===[[Ruby/TracePoint/raised_exception |<code>raised_exception</code>]]=== | ||
يعيد قيمة الاستثناء الذي تم إطلاقه في | يعيد قيمة الاستثناء الذي تم إطلاقه في الحدث <code>raise:</code>. | ||
===[[Ruby/TracePoint/return_value | | ===[[Ruby/TracePoint/return_value |<code>return_value</code>]]=== | ||
يُعيد | يُعيد قيمة الحدث <code>:return</code> و <code>c_return</code> و <code>b_return</code>. | ||
===[[Ruby/TracePoint/self | | ===[[Ruby/TracePoint/self |<code>self</code>]]=== | ||
يُعيد | يُعيد كائن التعقب (trace object) الذي تم إنشاؤه من الحدث. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/TracePoint.html | *[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) الذي تم إنشاؤه من الحدث.