التابع set_trace_func
الخاص بالصنف Kernel
في روبي
يجعل التابع set_trace_func الوسيط المعطى proc كمتعقب (handler for tracing)، أو يعطل التعقب إن كان الوسيط يساوي nil
.
ملاحظة: هذا التابع صار متجاوزًا، يُرجى استخدام TracePoint
بدلاً من ذلك.
يأخذ proc ستة وسائط:
اسم حدث اسم ملف رقم السطر معرف كائن (an object id) كائن ربط (binding) اسم الصنف
يتم استدعاء proc كلما وقع حدث.
الأحداث:
c-call
استدعاء C-language routine c-return
العودة من C-language routine 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
nil
القيمة المُعادة
انظر أيضا
- التابع
select
: يستدعي select(2). ويقوم بمراقبة المصفوفة المعطاة المكونة من كائناتIO
، وينتظر حتى يكون أحد كائناتIO
جاهزًا للقراءة ، وجاهزا للكتابة، ويكون لها استثناءات معلقة (pending exceptions) على التوالي، ثم يعيد مصفوفة تحتوي على مصفوفات مكونة من تلك كائناتIO
السابقة. ستُعاد القيمةnil
إذا تم إعطاء قيمة للوسيط الاختياري timeout، ولم يكن هناك أي كائنIO
جاهزًا خلال timeout ثانية. - التابع
sleep
: يعلّق التابع sleep المهمة الفرعية (thread) الحالية لعدد من الثواني (والذي قد بكون أي عدد، بما في ذلكFloat
مع كسور ثوان). ثم يعيد عدد الثواني الفعلي (بالتقريب) الذي نامتها المهمة الفرعية، والذي قد يكون أقل من العدد المطلوب إن استدعت مهمة فرعية أخرىThread#run
. في حال استدعائها دون تمرير أي وسيط، ستقوم sleep() بتنويم المهمة الفرعية إلى الأبد.