0Pricing
Lua Academy · درس

مكتبة debug

افحص تتبعات المكدس والمتغيرات المحلية وUpvalues باستخدام مكتبة debug

مكتبة debug درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.

ما مكتبة debug؟

توفر مكتبة debug وصولًا منخفض المستوى إلى الأجزاء الداخلية لـ Lua، مثل إطارات المكدس والمتغيرات المحلية والقيم العلوية والخطافات وحالة coroutine. استخدمها لتصحيح الأخطاء، لا لمنطق الإنتاج.

debug.traceback

تُرجع debug.traceback(msg, level) سلسلة نصية تحوي مكدس الاستدعاءات. وغالبًا ما تُمرر إلى xpcall بوصفها معالج الأخطاء.

local ok, err = xpcall(function()
  error("something went wrong")
end, debug.traceback)
print(err)

debug.getinfo

تُرجع debug.getinfo(fn, what) جدولًا يحوي معلومات عن دالة، مثل الاسم والمصدر والسطر الذي عُرّفت فيه وغير ذلك.

local function foo() end
local info = debug.getinfo(foo, "Sl")
print(info.source, info.linedefined)

فحص مستويات المكدس

مرّر عددًا صحيحًا إلى debug.getinfo لفحص إطار مكدس محدد. المستوى 1 هو الدالة الحالية، والمستوى 2 هو المستدعي.

local function where()
  local info = debug.getinfo(2, "Sl")
  return info.short_src .. ":" .. info.currentline
end
print(where())

debug.getlocal وdebug.setlocal

تُرجع debug.getlocal(level, n) اسم وقيمة المتغير المحلي رقم n في إطار مكدس.

local function example()
  local x = 42
  print(debug.getlocal(1, 1))  -- x  42
end
example()

debug.getupvalue وdebug.setupvalue

افحص القيم العلوية لدالة وعدّلها. تُرجع getupvalue(fn, n) الاسم والقيمة.

local x = 10
local function f() return x end
print(debug.getupvalue(f, 1))  -- x  10
debug.setupvalue(f, 1, 99)
print(f())  -- 99

debug.sethook

تعيّن debug.sethook(fn, mask, count) خطافًا يُستدعى عند وقوع أحداث: "c" (استدعاء)، أو "r" (إرجاع)، أو "l" (سطر)، أو بعد كل N من التعليمات.

local calls = 0
debug.sethook(function() calls = calls + 1 end, "c")
-- ... run some code ...
debug.sethook()  -- remove hook
print("calls:", calls)

debug.getmetatable

تسترجع debug.getmetatable(obj) الجدول الفوقي حتى عندما تكون getmetatable محجوبة بواسطة حقل __metatable.

debug.upvalueid وupvaluejoin

تُرجع debug.upvalueid(fn, n) معرّفًا فريدًا لقيمة علوية. وتجعل debug.upvaluejoin(f1,n1,f2,n2) القيمتين تشتركان في الخلية نفسها.

تنبيه: مخاطر مكتبة debug

يمكن لمكتبة debug انتهاك التغليف وكسر الثوابت. لا تستخدمها مطلقًا في شيفرة الإنتاج. احصر استخدامها في الاختبار وتحليل الأداء وأدوات التطوير.

debug.traceback في xpcall

أكثر استخدامات debug شيوعًا وأمانًا في الإنتاج هو تمرير debug.traceback إلى xpcall بوصفه معالج الأخطاء للحصول على رسائل أخطاء غنية.

سؤال حول مكتبة debug

أي دالة من دوال debug آمنة وشائعة الاستخدام في معالجة أخطاء الإنتاج؟

مراجعة: مكتبة debug

تكشف مكتبة debug إطارات المكدس والمتغيرات المحلية والقيم العلوية والخطافات. استخدم debug.traceback مع xpcall للحصول على أخطاء غنية، وتعامل مع بقية الأدوات باعتبارها أدوات فحص مخصصة للمطورين.

الأسئلة الشائعة

هل درس «مكتبة debug» مجاني؟

نعم — نص درس «مكتبة debug» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.

ماذا ستتعلم في «مكتبة debug»؟

افحص تتبعات المكدس والمتغيرات المحلية وUpvalues باستخدام مكتبة debug تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟

لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «مكتبة debug»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟

نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. دوال مكتبة math
  2. دوال مكتبة table
  3. مكتبتا os وio
  4. مكتبة debug
← العودة إلى Lua Academy