Ayrıntılı debug Kitaplığı
İçgözlem için debug.traceback, getinfo, getlocal ve getupvalue kullanın.
Ayrıntılı debug Kitaplığı, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
debug Kitaplığına Genel Bakış
debug kitaplığı, Lua'nın iç gözlem araç setidir. Herhangi bir işlevin, eş yordamın veya yığın çerçevesinin çalışma zamanı durumunu incelemenize ve değiştirmenize olanak tanır.
debug.getinfo Ayrıntılı İnceleme
debug.getinfo(f, what) what bayraklarını kabul eder: "n" (ad), "S" (kaynak), "l" (geçerli satır), "u" (üst değerler), "f" (işlev başvurusu).
local function foo()
local info = debug.getinfo(1, "nSlu")
print(info.name) -- foo
print(info.short_src) -- source file
print(info.currentline) -- line number
print(info.nups) -- number of upvalues
end
foo()Yerel Değişkenleri İnceleme
debug.getlocal(level, n), verilen yığın düzeyindeki n'inci yerel değişkenin adını ve değerini döndürür. 1. düzey = geçerli işlev.
local function example()
local x, y = 10, 20
local i = 1
while true do
local name, val = debug.getlocal(1, i)
if not name then break end
print(name, val)
i = i + 1
end
end
example() -- x 10 / y 20Yerel Değişkenleri Değiştirme
debug.setlocal(level, n, value), bir yerel değişkenin değerini çalışma zamanında değiştirir; hata ayıklama ve sınama için güçlü bir araçtır.
Üst Değerleri İnceleme
debug.getupvalue(fn, n), bir işlevin n'inci üst değerinin adını ve değerini döndürür. nil döndürülene kadar n değerini artırarak yineleyiniz.
local count = 0
local function inc() count = count + 1 end
print(debug.getupvalue(inc, 1)) -- count 0
debug.setupvalue(inc, 1, 99)
inc()
print(count) -- 100Yığın Gezintisi
debug.getinfo nil döndürene kadar düzeyi artırarak tüm çağrı yığınında gezininiz.
local function printStackTrace()
local level = 1
while true do
local info = debug.getinfo(level, "Sln")
if not info then break end
print(level, info.short_src, info.currentline, info.name)
level = level + 1
end
enddebug.traceback
debug.traceback(msg, level), biçimlendirilmiş bir yığın izleme dizesi döndürür. Üretimde hata işleme için en pratik hata ayıklama işlevidir.
Eş Yordamları İnceleme
Yığınını incelemek için bir eş yordamı debug.getinfo işlevine ilk bağımsız değişken olarak geçiriniz.
local co = coroutine.create(function()
print(debug.getinfo(1, "l").currentline)
end)
coroutine.resume(co)İzleme için debug.sethook
İşlev adlarını yazdıran bir call kancası ayarlayarak programdaki tüm işlev çağrılarını izleyiniz.
debug.sethook(function(event)
if event == "call" then
local info = debug.getinfo(2, "Sn")
print("CALL:", info.name or "?")
end
end, "c")Taşınabilir Doğrulamalar
Doğrulama hatalarına dosya ve satır bilgilerini dâhil etmek için debug.getinfo(2, "Sl") kullanınız.
local function assert2(cond, msg)
if not cond then
local info = debug.getinfo(2, "Sl")
error(("[%s:%d] %s"):format(info.short_src, info.currentline, msg), 2)
end
endDikkat
Hata ayıklama kitaplığı kapsüllemeyi ihlal edebilir, programları önemli ölçüde yavaşlatabilir (özellikle debug.sethook) ve tüm ortamlarda kullanılamaz. Yalnızca geliştirme ve sınama sırasında kullanınız.
debug Kitaplığı Sorusu
debug.getupvalue(fn, 1) ne döndürür?
Özet: debug Kitaplığını Ayrıntılı İnceleme
Hata ayıklama kitaplığı yığın inceleme (getinfo), yerel değişken inceleme/değiştirme (getlocal/setlocal), üst değer erişimi (getupvalue/setupvalue) ve kanca tabanlı izleme (sethook) sağlar. Yalnızca geliştirme sırasında sorumlu biçimde kullanınız.
Sıkça Sorulan Sorular
“Ayrıntılı debug Kitaplığı” dersi ücretsiz mi?
Evet — “Ayrıntılı debug Kitaplığı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“Ayrıntılı debug Kitaplığı” dersinde ne öğreneceğim?
İçgözlem için debug.traceback, getinfo, getlocal ve getupvalue kullanın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Ayrıntılı debug Kitaplığı” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Ayrıntılı debug Kitaplığı
- MobDebug ile Uzaktan Hata Ayıklama
- LuaProfiler ile Profil Oluşturma
- Kod Kapsamı ve Test Enstrümantasyonu