debug
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Roblox'ta kodun depurajı için birkaç temel işlev sağlar.Lua'da doğrudan bulunan debug kütüphanesinin aksine, bu sürüm ağır bir şekilde kumandaya alındı.
Özet
İşlevler
Mevcut işlev çağrı yığınını tanımlayan belirsiz biçimli bir dize döndürür.
Mevcut işlev çağrı yığınını tanımlayan belirsiz biçimli bir dize döndürür.
Mevcut iş parçacığının bütününü geçer ve hedef seviye detaylarının çağrı yığınını içeren bir dize döndürür.
Mevcut iş parçası yığınının tümünü geçer ve hedef işlevin çağrı yığını detaylarını içeren bir dize döndürür.
Hedef iş parçacığının tümünü geçer ve hedef seviye detaylarının çağrı yığınını içeren bir dize döndürür.
Bir etiket için profillemeye başlar.
Açılan en yeni etiket için profillemeyi durdurur debug.profilebegin() .
Mevcut işlemin aktif hafız kategorisinin adını döndürür.
Mevcut işlemin hafıza kategorisine özel bir etiket atar.
debug.setmemorycategory() tarafından atanan etiketi otomatik olarak atanan değere sıfırlar (genellikle, senaryo adı).
Tek tek bireysel işlevlerin ve senaryoların yerli kod boyutunun bir tablosunu görüntüler.
İşlevler
traceback
Mevcut işlev çağrı yığınını bir dize olarak bir dizibırakır; başka bir deyişle, bu noktaya kadar çağrılan işlevlerin açıklaması.Sorun giderme sırasında, bu bir hata yığını izi gibi davranır, ancak senaryonun yürütmesini durdurmaz.
The parametresi, dikkate alınacak çağrı yığını seviyesini belirtir, çağrının kendisi olarak, fonksiyon çağrısı olarak, ve öylece devam eder.Sekansal işlev çağrılarının bir örneğini aşağıdaki kod örneğinde görün.
Bu işlevin genellikle yanlış sonuçlar vereceğini (orijinal kaynak koduna kıyasla) ve geri takip edilen formatın herhangi bir zamanda değişebileceğini unutmayın.Döndürülen değeri özel bilgiler için yorumlamamalısınız , örneğin senaryo isimleri veya satır numaraları gibi.
Aşağıdaki örnek sıralı işlev çağrıları içerir; fnB() çağrılır ve daha sonra fnA() 'yi çağırır ki bu da debug.traceback() 'yi çağırır.
local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- İzlemeyi başlatmak için fnB() işlevini çağır
fnB()
Parametreler
Dönüşler
Mevcut işlev çağrı yığının izlenmesi.
traceback
Mevcut işlev çağrı yığınını bir dize olarak bir dizibırakır; başka bir deyişle, bu noktaya kadar çağrılan işlevlerin açıklaması.Sorun giderme sırasında, bu bir hata yığını izi gibi davranır, ancak senaryonun yürütmesini durdurmaz.
The parametresi, dikkate alınacak çağrı yığını seviyesini belirtir, çağrının kendisi olarak, fonksiyon çağrısı olarak, ve öylece devam eder.Sekansal işlev çağrılarının bir örneğini aşağıdaki kod örneğinde görün.
Bu işlevin genellikle yanlış sonuçlar vereceğini (orijinal kaynak koduna kıyasla) ve geri takip edilen formatın herhangi bir zamanda değişebileceğini unutmayın.Döndürülen değeri özel bilgiler için yorumlamamalısınız , örneğin senaryo isimleri veya satır numaraları gibi.
Aşağıdaki örnek sıralı işlev çağrıları içerir; fnB() çağrılır ve daha sonra fnA() 'yi çağırır ki bu da debug.traceback() 'yi çağırır.
local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- İzlemeyi başlatmak için fnB() işlevini çağır
fnB()
Parametreler
coroutine.create() tarafından döndürülen bir işlem.
Döndürülen diziilk satırı.
Geri dönmek için çağrı yığını "yukarı" olan çağrı sayısı.
Dönüşler
Mevcut işlev çağrı yığının izlenmesi.
info
Çağrı yığınının programatik olarak incelenmesine izin verir.Bu işlev, döndürdüğü veri biçimini garanti ettiği için debug.traceback() 'dan farklıdır.Bu, genel kayıt ve filtreleme amaçları ile birlikte, çökme toplanması gibi yapılandırılmış giriş bekleyen sistemlere veri göndermek için de yararlıdır.
local function fnA()
-- Çıkış kaynağı tanımlayıcısı ("s") ve satır ("l") 1. ve 2. seviyelerde
print(debug.info(1, "sl")) --> fnA() 3
print(debug.info(2, "sl")) --> fnA() 7
end
fnA()
Bu işlevin benzer olduğunu unutmayın debug.getinfo , benzer bir amaç için hizmet eden standart Lua kütüphanesinin kullanılamayan bir parçası.
Parametreler
Geri döndürülen bilginin hangi çağrı yığını seviyesinde tanımlanması gerektiğini belirler.1 değeri debug.info() 'yi çağıran işlevi temsil eder, 2 değeri o işlevi çağıran işlevi temsil eder ve öylece.
Döndürülen bilginin neyi temsil etmesi gerektiğini tanımlayan bir dize.Sadece karakterlerin slnaf 'inin 0 veya 1 örneğini içermelidir, her biri bir bilgi parçasını temsil eder:
Dönüşler
info
Çağrı yığınının programatik olarak incelenmesine izin verir.Bu işlev, döndürdüğü veri biçimini garanti ettiği için debug.traceback() 'dan farklıdır.Bu, genel kayıt ve filtreleme amaçları ile birlikte, çökme toplanması gibi yapılandırılmış giriş bekleyen sistemlere veri göndermek için de yararlıdır.
local function fnA()
end
local function fnB()
end
-- fnA() ve fnB() için çıktı hattı ("l"), adı ("n") ve tanımlayıcı ("f")
print(debug.info(fnA, "lnf")) --> 1 fnA işlevi: 0x75e3d3c398a81252
print(debug.info(fnB, "lnf")) --> 5 fnB function: 0x6022a6dc5ccf4ab2
Bu işlevin benzer olduğunu unutmayın debug.getinfo , benzer bir amaç için hizmet eden standart Lua kütüphanesinin kullanılamayan bir parçası.
Parametreler
Geri döndürülen bilginin açıkladığı çağrı yığınının işlevi.
Döndürülen bilginin neyi temsil etmesi gerektiğini tanımlayan bir dize.Sadece karakterlerin slnaf 'inin 0 veya 1 örneğini içermelidir, her biri bir bilgi parçasını temsil eder:
Dönüşler
info
Çağrı yığınının programatik olarak incelenmesine izin verir.Bu işlev, döndürdüğü veri biçimini garanti ettiği için debug.traceback() 'dan farklıdır.Bu, genel kayıt ve filtreleme amaçları ile birlikte, çökme toplanması gibi yapılandırılmış giriş bekleyen sistemlere veri göndermek için de yararlıdır.
local function fnA()
-- Çıkış kaynağı tanımlayıcısı ("s") ve satır ("l") 1. ve 2. seviyelerde
print(debug.info(1, "sl")) --> fnA() 3
print(debug.info(2, "sl")) --> fnA() 7
end
fnA()
Bu işlevin benzer olduğunu unutmayın debug.getinfo , benzer bir amaç için hizmet eden standart Lua kütüphanesinin kullanılamayan bir parçası.
Parametreler
coroutine.create() tarafından döndürülen bir işlem.
Geri döndürülen bilginin hangi çağrı yığını seviyesinde tanımlanması gerektiğini belirler.1 değeri debug.info() 'yi çağıran işlevi temsil eder, 2 değeri o işlevi çağıran işlevi temsil eder ve öylece.
Döndürülen bilginin neyi temsil etmesi gerektiğini tanımlayan bir dize.Sadece karakterlerin slnaf 'inin 0 veya 1 örneğini içermelidir, her biri bir bilgi parçasını temsil eder:
Dönüşler
profilebegin
Bir MikroProfiler etiketi için profillemeye başlar.
Parametreler
Bu MikroProfil etiketinin gösterdiği metin.
Dönüşler
profileend
Açılan en yeni MikroProfiler etiketi için profillemeyi durdurur. debug.profilebegin()
Dönüşler
setmemorycategory
Mevcut işlemin hafıza kategorisine özel bir etiket adı atar Geliştirici Konsoluna .Aksi takdirde aynı etiket/isim altında gruplandırılacak çok sayıda işletmenin bellek kullanımını analiz etmek için yararlıdır.Mevcut işlemin önceki bellek kategorisinin adını döndürür.
Parametreler
Dönüşler
Mevcut işlemin önceki hafıza kategorisi.
resetmemorycategory
debug.setmemorycategory() tarafından atanan etiketi otomatik olarak atanan değere sıfırlar (genellikle, senaryo adı).
Dönüşler
dumpcodesize
Tek tek bireysel işlevlerin ve senaryoların yerli kod boyutunun bir tablosunu görüntüler.Bu işlev yalnızca Studio'daki Komut Çubuğunda mevcuttur.Daha fazla ayrıntı Yerel Kod Oluşturma sayfasında bulunabilir.