debug
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Menyediakan beberapa fungsi dasar untuk mendekompresi kode di Roblox. Berbeda dengan perpustakaan debug yang ditemukan di Lua secara natif, versi ini telah sangat sandboxed.
Rangkuman
Fungsi
Mengembalikan string format tidak dapat diubah yang menggambarkan tumpukan panggilan fungsi saat ini.
Mengembalikan string format tidak dapat diubah yang menggambarkan tumpukan panggilan fungsi saat ini.
Melintasi seluruh tumpukan thread saat ini dan mengembalikan string yang berisi deskripsi tingkat tujuan.
Melintasi seluruh tumpukan thread saat ini dan mengembalikan string yang berisi deskripsi tumpukan panggilan target.
Melintasi seluruh tumpukan thread target dan mengembalikan string yang berisi call stack level target.
Memulai profil untuk label.
Menghentikan profil untuk label terbaru yang debug.profilebegin() dibuka.
Mengembalikan nama kategori memori aktif thread saat ini.
Menetapkan label khusus ke kategori memori thread saat ini.
Atur ulang label yang ditetapkan oleh debug.setmemorycategory() ke nilai yang ditetapkan secara otomatis ( biasanya, nama script).
Menampilkan tabel ukuran kode asli fungsi dan skrip individual.
Fungsi
traceback
Mengembalikan jejak fungsi saat ini sebagai string; dengan kata lain, deskripsi dari fungsi yang telah dipanggil sejauh ini. Selama debug, ini bersikap seperti jejak Stack Error tetapi tidak menghentikan eksekusi script.
Paraметri level menentukan tingkat tumpukan panggilan yang akan dipertimbangkan, dengan 1 menjadi panggilan dari debug.traceback() sendiri, 1>21> menjadi panggilan fungsi yang memanggil 4>Library. debug. traceback4> ,
Catat bahwa fungsi ini sering akan mengembalikan hasil yang tidak akurat (dibandingkan dengan kode sumber asli) dan bahwa format return traceback dapat berubah kapan saja. Anda seharusnya tidak Parsing nilai kembali untuk informasi spesifik seperti nama skrip atau nomor baris.
Contoh berikut mencakup panggilan fungsi berurutan; fnB() dinyatakan, dan memanggil fnA() yang kemudian memanggil debug.traceback() .
local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- Panggil fungsi dlB() untuk memulai traceback
fnB()
Parameter
Memberikan nilai
Traceback dari fungsi panggilan stack saat ini.
traceback
Mengembalikan jejak fungsi saat ini sebagai string; dengan kata lain, deskripsi dari fungsi yang telah dipanggil sejauh ini. Selama debug, ini bersikap seperti jejak Stack Error tetapi tidak menghentikan eksekusi script.
Paraметri level menentukan tingkat tumpukan panggilan yang akan dipertimbangkan, dengan 1 menjadi panggilan dari debug.traceback() sendiri, 1>21> menjadi panggilan fungsi yang memanggil 4>Library. debug. traceback4> ,
Catat bahwa fungsi ini sering akan mengembalikan hasil yang tidak akurat (dibandingkan dengan kode sumber asli) dan bahwa format return traceback dapat berubah kapan saja. Anda seharusnya tidak Parsing nilai kembali untuk informasi spesifik seperti nama skrip atau nomor baris.
Contoh berikut mencakup panggilan fungsi berurutan; fnB() dinyatakan, dan memanggil fnA() yang kemudian memanggil debug.traceback() .
local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- Panggil fungsi dlB() untuk memulai traceback
fnB()
Parameter
Sebuah thread yang dikembalikan oleh coroutine.create() .
Baris pertama dari string yang dikembalikan.
Jumlah panggilan "naik" tumpukan panggilan untuk dikembalikan.
Memberikan nilai
Traceback dari fungsi panggilan stack saat ini.
info
Mengizinkan inspeksi programatik pada tumpukan panggilan. Fungsi ini berbeda dari debug.traceback() di mana itu menjamin format data yang dikembalikan. Ini berguna untuk tujuan general logging dan filtering serta untuk mengirim data ke sistem yang mengharapkan masukan berstruktur, seperti agregasi gagal.
local function fnA()
-- Output identifikasi sumber ("s") dan baris ("l") di tingkat 1 dan 2
print(debug.info(1, "sl")) --> funnA() 3
print(debug.info(2, "sl")) --> funnA() 7
end
fnA()
Catat bahwa fungsi ini mirip dengan debug.getinfo, bagian yang tidak tersedia dari perpustakaan Lua standar yang melayani tujuan serupa.
Parameter
Menentukan pada tingkat mana dari tumpukan panggilan informasi yang dikembalikan harus dijelaskan. Sebuah nilai dari 1 mewakili fungsi yang memanggil fungsi itu, dan seterusnya.
Sebuah string yang menggambarkan apa yang harus diwakili oleh informasi yang dikembalikan. Ini hanya boleh berisi 0 atau 1 instans karakter slnaf , masing-masing mewakili potongan informasi:
Memberikan nilai
info
Mengizinkan inspeksi programatik pada tumpukan panggilan. Fungsi ini berbeda dari debug.traceback() di mana itu menjamin format data yang dikembalikan. Ini berguna untuk tujuan general logging dan filtering serta untuk mengirim data ke sistem yang mengharapkan masukan berstruktur, seperti agregasi gagal.
local function fnA()
end
local function fnB()
end
-- Output line ("l"), name ("n"), dan identifier ("f") untuk kedua fonA() dan fonB()
print(debug.info(fnA, "lnf")) --> 1 fungsi fnA: 0x75e3d3c398a81252
print(debug.info(fnB, "lnf")) --> 5 fnB function: 0x6022a6dc5ccf4ab2
Catat bahwa fungsi ini mirip dengan debug.getinfo, bagian yang tidak tersedia dari perpustakaan Lua standar yang melayani tujuan serupa.
Parameter
Fungsi dari tumpukan panggilan yang dikembalikan harus menggambarkan.
Sebuah string yang menggambarkan apa yang harus diwakili oleh informasi yang dikembalikan. Ini hanya boleh berisi 0 atau 1 instans karakter slnaf , masing-masing mewakili potongan informasi:
Memberikan nilai
info
Mengizinkan inspeksi programatik pada tumpukan panggilan. Fungsi ini berbeda dari debug.traceback() di mana itu menjamin format data yang dikembalikan. Ini berguna untuk tujuan general logging dan filtering serta untuk mengirim data ke sistem yang mengharapkan masukan berstruktur, seperti agregasi gagal.
local function fnA()
-- Output identifikasi sumber ("s") dan baris ("l") di tingkat 1 dan 2
print(debug.info(1, "sl")) --> funnA() 3
print(debug.info(2, "sl")) --> funnA() 7
end
fnA()
Catat bahwa fungsi ini mirip dengan debug.getinfo, bagian yang tidak tersedia dari perpustakaan Lua standar yang melayani tujuan serupa.
Parameter
Sebuah thread yang dikembalikan oleh coroutine.create() .
Menentukan pada tingkat mana dari tumpukan panggilan informasi yang dikembalikan harus dijelaskan. Sebuah nilai dari 1 mewakili fungsi yang memanggil fungsi itu, dan seterusnya.
Sebuah string yang menggambarkan apa yang harus diwakili oleh informasi yang dikembalikan. Ini hanya boleh berisi 0 atau 1 instans karakter slnaf , masing-masing mewakili potongan informasi:
Memberikan nilai
profilebegin
Memulai profil untuk label MicroProfiler.
Parameter
Teks yang ditunjukkan label ini MicroProfiler .
Memberikan nilai
profileend
Menghentikan profil untuk label MicroProfiler terbaru yang debug.profilebegin() dibuka.
Memberikan nilai
setmemorycategory
Mengidentifikasi nama tag khusus untuk kategori memori thread saat ini di Developer Console . Berguna untuk menganalisis penggunaan memori dari beberapa thread di script yang sama yang seharusnya dikumpulkan bersama-sama di bawah nama tag/nama yang sama. Mengembalikan nama kategori memori saat ini.
Parameter
Memberikan nilai
Kategori memori sebelumnya dari thread saat ini.
resetmemorycategory
Atur ulang label yang ditetapkan oleh debug.setmemorycategory() ke nilai yang ditetapkan secara otomatis ( biasanya, nama script).
Memberikan nilai
dumpcodesize
Menampilkan tabel ukuran kode natif fungsi dan skrip individual. Fungsi ini hanya tersedia di Command Bar di Studio. Lebih banyak rincian dapat ditemukan di halaman Pembuatan Kode Natif.