الفرق بين المراجعتين ل"Ruby/Kernel/set trace func"

من موسوعة حسوب
< Ruby‏ | Kernel
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>set_trace_func‎</code> الخاص بالصنف <code>Kernel</code> في روبي}}</noinclude> تصنيف: Ruby ...')
 
ط (مراجعة وتدقيق)
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Kernel]]
 
[[تصنيف: Ruby Kernel]]
يجعل التابع set_trace_func الوسيط المعطى proc كمتعقب (handler for tracing)، أو يعطل التعقب إن كان الوسيط يساوي <code>nil</code>.
+
يجعل التابع <code>set_trace_func</code> المعامل المعطى كمعالج للتعقب، أو يعطل التعقب إن كان الوسيط يساوي <code>nil</code>.
ملاحظة: هذا التابع صار متجاوزًا، يُرجى استخدام <code>TracePoint</code> بدلاً من ذلك.
+
 
يأخذ proc ستة وسائط:
+
'''ملاحظة''': أصبح هذا التابع مهملًا، لذا يُرجى استخدام التابع <code>[[Ruby/TracePoint|TracePoint]]</code> بدلاً منه.
اسم حدث اسم ملف رقم السطر معرف كائن (an object id) كائن ربط (binding) اسم الصنف
+
__TOC__
يتم استدعاء proc كلما وقع حدث.
+
يقبل <code>proc</code> ستة معاملات هي:
الأحداث:
+
*اسم حدث
<code>c-call</code> استدعاء C-language routine <code>c-return</code> العودة من C-language routine <code>call</code> استدعاء تابع من توابع روبي <code>class</code> بدء تعريف صنف أو وحدة <code>end</code> إنهاءبدء تعريف صنف أو وحدة <code>line</code> تنفيذ كود برمجي على سطر جديد <code>raise</code> إطلاق استثناء <code>return</code> العودة من توابع روبع
+
*اسم ملف
يتم تعطيل التعقب في سياق proc.
+
*رقم سطر
<syntaxhighlight lang="ruby">  class Test
+
*معرف كائن (object id)
 +
*كائن ربط (binding)
 +
*اسم صنف
 +
يستدعى <code>proc</code> كلما وقع حدث. الأحداث هي:
 +
{| class="wikitable"
 +
!الحدث
 +
!الوصف
 +
|-
 +
|<code>c-call</code>
 +
|استدعاء برنامج فرعي في لغة C.
 +
|-
 +
|<code>c-return</code>
 +
|العودة من برنامج فرعي في لغة C.
 +
|-
 +
|<code>call</code>
 +
|استدعاء تابع من توابع روبي.
 +
|-
 +
|<code>class</code>
 +
|بدء تعريف صنف أو وحدة.
 +
|-
 +
|<code>end</code>
 +
|إنهاء بدء تعريف صنف أو وحدة.
 +
|-
 +
|<code>line</code>
 +
|تنفيذ كود برمجي في سطر جديد.
 +
|-
 +
|<code>raise</code>
 +
|إطلاق استثناء.
 +
|-
 +
|<code>return</code>
 +
|العودة من توابع روبي.
 +
|}يتم تعطيل التعقب في سياق <code>proc</code>.<syntaxhighlight lang="ruby">  class Test
 
   def test
 
   def test
 
     a = 1
 
     a = 1
سطر 37: سطر 68:
 
==المعاملات==
 
==المعاملات==
 
===<code>proc‎</code>===
 
===<code>proc‎</code>===
 +
كائن من النوع <code>[[Ruby/Proc|Proc]]</code> يمثل المتعقب المعطى.
  
===<code>nil‎</code>===
+
== القيمة المعادة ==
 
+
يعاد كائن من النوع <code>[[Ruby/Proc|Proc]]</code> أو تعاد القيمة <code>nil</code>.
 
 
==القيمة المُعادة==
 
  
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <code>[[Ruby/Kernel/select|select]]</code>: يستدعي select(2). ويقوم بمراقبة المصفوفة المعطاة المكونة من كائنات <code>IO</code>، وينتظر حتى يكون أحد كائنات <code>IO</code> جاهزًا للقراءة ، وجاهزا للكتابة، ويكون لها استثناءات معلقة (pending exceptions) على التوالي، ثم يعيد مصفوفة تحتوي على مصفوفات مكونة من تلك كائنات <code>IO</code> السابقة.  ستُعاد القيمة <code>nil</code> إذا تم إعطاء قيمة للوسيط الاختياري timeout، ولم يكن هناك أي كائن <code>IO</code> جاهزًا خلال timeout ثانية.
+
*صفحة الصنف <code>[[Ruby/TracePoint|TracePoint]]</code>.
* التابع <code>[[Ruby/Kernel/sleep|sleep]]</code>: يعلّق التابع sleep المهمة الفرعية (thread) الحالية لعدد من الثواني (والذي قد بكون أي عدد، بما في ذلك <code>Float</code> مع كسور ثوان). ثم يعيد عدد الثواني الفعلي (بالتقريب) الذي نامتها المهمة الفرعية، والذي قد يكون أقل من العدد المطلوب إن استدعت مهمة فرعية أخرى <code>Thread#run</code>. في حال استدعائها دون تمرير أي وسيط، ستقوم sleep() بتنويم المهمة الفرعية إلى الأبد.
 
 
 
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-set_trace_func قسم التابع set_trace_func‎ في الصنف Kernel‎ في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-set_trace_func قسم التابع set_trace_func‎ في الصنف Kernel‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 12:40، 16 نوفمبر 2018

يجعل التابع set_trace_func المعامل المعطى كمعالج للتعقب، أو يعطل التعقب إن كان الوسيط يساوي nil.

ملاحظة: أصبح هذا التابع مهملًا، لذا يُرجى استخدام التابع TracePoint بدلاً منه.

يقبل proc ستة معاملات هي:

  • اسم حدث
  • اسم ملف
  • رقم سطر
  • معرف كائن (object id)
  • كائن ربط (binding)
  • اسم صنف

يستدعى proc كلما وقع حدث. الأحداث هي:

الحدث الوصف
c-call استدعاء برنامج فرعي في لغة C.
c-return العودة من برنامج فرعي في لغة C.
call استدعاء تابع من توابع روبي.
class بدء تعريف صنف أو وحدة.
end إنهاء بدء تعريف صنف أو وحدة.
line تنفيذ كود برمجي في سطر جديد.
raise إطلاق استثناء.
return العودة من توابع روبي.

يتم تعطيل التعقب في سياق proc.

  class Test
  def test
    a = 1
    b = 2
  end
  end
  set_trace_func proc { |event, file, line, id, binding, classname|
     printf "%8s %s:%-2d %10s %8s\n", event, file, line, id, classname
  }
  t = Test.new
  t.test
    line prog.rb:11               false
  c-call prog.rb:11        new    Class
  c-call prog.rb:11 initialize   Object
c-return prog.rb:11 initialize   Object
c-return prog.rb:11        new    Class
    line prog.rb:12               false
    call prog.rb:2        test     Test
    line prog.rb:3        test     Test
    line prog.rb:4        test     Test
  return prog.rb:4        test     Test

البنية العامة

set_trace_func(proc)  proc
set_trace_func(nil)   nil

المعاملات

proc‎

كائن من النوع Proc يمثل المتعقب المعطى.

القيمة المعادة

يعاد كائن من النوع Proc أو تعاد القيمة nil.

انظر أيضا

مصادر