التابع new‎ الخاص بالصنف TracePoint في روبي

من موسوعة حسوب

يُعيد التابع new متعقبا جديدًا، غير متاح افتراضيا.

من أجل إتاحة التعقب، يجب عليك استخدام enable

trace = TracePoint.new(:call) do |tp|
    p [tp.lineno, tp.defined_class, tp.method_id, tp.event]
end
#=> #<TracePoint:disabled>

trace.enable
#=> false

puts "Hello, TracePoint!"
# ...
# [48, IRB::Notifier::AbstractNotifier, :printf, :call]
# ...

إن أردت إلغاء التعقب، عليك استخدام disable

trace.disable

راجع صفحة الصنف TracePoint للتعرف على الأحداث الممكنة ولمزيد من المعلومات.

يجب إعطاء كتلة، وإلا سيُطلق الاستثناء ArgumentError.

إذا لم يتم تضمين التابع trace في مرشح الأحداث (events filter) المعطاة، فسيُطلق الاستثناء RuntimeError.

TracePoint.trace(:line) do |tp|
    p tp.raised_exception
end
#=> RuntimeError: 'raised_exception' not supported by this event

إذا تم استدعاء التابع trace خارج كتلة، فسيُطلق RuntimeError.

TracePoint.trace(:line) do |tp|
  $tp = tp
end
$tp.lineno #=> access from outside (RuntimeError)

كما يُحظر الدخول من المهام الفرعية الأخرى.

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

new(*events) { |obj| block }  obj

المعاملات

events‎

أحداث.

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

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

انظر أيضا

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

مصادر