debug
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Memberikan beberapa fungsi dasar untuk mem debug kode di Roblox.Tidak seperti perpustakaan debug yang ditemukan di Lua secara native, versi ini telah diberi sandbox berat.
Rangkuman
Fungsi
Kembalikan serangkaian format tidak didefinisikan yang menggambarkan tumpukan panggilan fungsi saat ini.
Kembalikan serangkaian format tidak didefinisikan yang menggambarkan tumpukan panggilan fungsi saat ini.
Melintasi seluruh tumpukan thread saat ini dan kembali string yang berisi tumpukan panggilan level target.
Melintasi seluruh tumpukan thread saat ini dan kembali string yang berisi tumpukan panggilan dari rincian fungsi target.
Melintasi seluruh tumpukan thread target dan kembali string yang berisi tumpukan panggilan dari rincian tingkat target.
Memulai profiling untuk label.
Menghentikan profiling untuk label terbaru yang debug.profilebegin() dibuka.
Kembalikan nama kategori memori aktif thread saat ini.
Menugaskan tag khusus ke kategori memori thread saat ini.
Atur ulang tag yang ditugaskan oleh debug.setmemorycategory() ke nilai yang ditugaskan secara otomatis (biasanya, nama skrip).
Menampilkan tabel ukuran kode asli dari fungsi dan skrip individu.
Fungsi
traceback
Kembalikan jejak panggilan fungsi saat ini sebagai string; dengan kata lain, deskripsi fungsi yang telah dipanggil sampai saat ini.Selama debugging, ini berperilaku seperti jejak tumpukan kesalahan tetapi tidak menghentikan eksekusi skrip.
Parameter level menypesifikasi tingkat panggilan apa yang harus dipertimbangkan, dengan 1 menjadi panggilan dari debug.traceback() sendiri, 2 menjadi panggilan fungsi yang memanggil debug.traceback() , dan seterusnya.Lihat contoh kode di bawah ini untuk contoh panggilan fungsi berurutan.
Perhatikan bahwa fungsi ini sering kali akan mengembalikan hasil yang tidak akurat (dibandingkan dengan kode sumber asli) dan bahwa format jejak balik yang dikembalikan dapat berubah kapan saja.Anda harus tidak menganalisis nilai pengembalian untuk informasi spesifik seperti nama skrip atau nomor baris.
Contoh berikut termasuk panggilan fungsi berurutan; fnB() dipanggil, 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 fnB() untuk memulai pelacakan ulang
fnB()
Parameter
Memberikan nilai
Pelacakan tumpukan panggilan fungsi saat ini.
traceback
Kembalikan jejak panggilan fungsi saat ini sebagai string; dengan kata lain, deskripsi fungsi yang telah dipanggil sampai saat ini.Selama debugging, ini berperilaku seperti jejak tumpukan kesalahan tetapi tidak menghentikan eksekusi skrip.
Parameter level menypesifikasi tingkat panggilan apa yang harus dipertimbangkan, dengan 1 menjadi panggilan dari debug.traceback() sendiri, 2 menjadi panggilan fungsi yang memanggil debug.traceback() , dan seterusnya.Lihat contoh kode di bawah ini untuk contoh panggilan fungsi berurutan.
Perhatikan bahwa fungsi ini sering kali akan mengembalikan hasil yang tidak akurat (dibandingkan dengan kode sumber asli) dan bahwa format jejak balik yang dikembalikan dapat berubah kapan saja.Anda harus tidak menganalisis nilai pengembalian untuk informasi spesifik seperti nama skrip atau nomor baris.
Contoh berikut termasuk panggilan fungsi berurutan; fnB() dipanggil, 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 fnB() untuk memulai pelacakan ulang
fnB()
Parameter
Thread yang dikembalikan oleh coroutine.create() .
Baris pertama dari string yang dikembalikan.
Jumlah panggilan "naik" tumpukan panggilan untuk dikembalikan.
Memberikan nilai
Pelacakan tumpukan panggilan fungsi saat ini.
info
Memungkinkan inspeksi programatik dari tumpukan panggilan.Fungsi ini berbeda dari debug.traceback() dalam hal menjamin format data yang dikembalikan.Ini berguna untuk tujuan pencatatan dan penyaringan umum serta untuk mengirim data ke sistem yang mengharapkan input terstruktur, seperti agregasi kecelakaan.
local function fnA()
-- Pengidentifikasi sumber output ("s") dan baris ("l") pada tingkat 1 dan 2
print(debug.info(1, "sl")) --> fnA() 3
print(debug.info(2, "sl")) --> fnA() 7
end
fnA()
Perhatikan bahwa fungsi ini mirip dengan debug.getinfo, bagian yang tidak tersedia dari perpustakaan Lua standar yang melayani tujuan serupa.
Parameter
Menentukan di tingkat apa dari tumpukan panggilan informasi yang dikembalikan harus dijelaskan.Nilai 1 mewakili fungsi yang memanggil debug.info() , nilai 2 mewakili fungsi yang memanggil fungsi itu, dan seterusnya.
Sebuah string yang menjelaskan apa yang harus diwakili informasi yang dikembalikan.Ini hanya harus berisi 0 atau 1 contoh karakter slnaf, masing-masing mewakili sepotong informasi:
Memberikan nilai
info
Memungkinkan inspeksi programatik dari tumpukan panggilan.Fungsi ini berbeda dari debug.traceback() dalam hal menjamin format data yang dikembalikan.Ini berguna untuk tujuan pencatatan dan penyaringan umum serta untuk mengirim data ke sistem yang mengharapkan input terstruktur, seperti agregasi kecelakaan.
local function fnA()
end
local function fnB()
end
-- Garis keluar ("l"), nama ("n"), dan identifikasi ("f") untuk kedua fnA() dan fnB()
print(debug.info(fnA, "lnf")) --> 1 fungsi fnA: 0x75e3d3c398a81252
print(debug.info(fnB, "lnf")) --> 5 fnB function: 0x6022a6dc5ccf4ab2
Perhatikan bahwa fungsi ini mirip dengan debug.getinfo, bagian yang tidak tersedia dari perpustakaan Lua standar yang melayani tujuan serupa.
Parameter
Fungsi tumpukan panggilan yang informasi yang dikembalikan harus deskripsikan.
Sebuah string yang menjelaskan apa yang harus diwakili informasi yang dikembalikan.Ini hanya harus berisi 0 atau 1 contoh karakter slnaf, masing-masing mewakili sepotong informasi:
Memberikan nilai
info
Memungkinkan inspeksi programatik dari tumpukan panggilan.Fungsi ini berbeda dari debug.traceback() dalam hal menjamin format data yang dikembalikan.Ini berguna untuk tujuan pencatatan dan penyaringan umum serta untuk mengirim data ke sistem yang mengharapkan input terstruktur, seperti agregasi kecelakaan.
local function fnA()
-- Pengidentifikasi sumber output ("s") dan baris ("l") pada tingkat 1 dan 2
print(debug.info(1, "sl")) --> fnA() 3
print(debug.info(2, "sl")) --> fnA() 7
end
fnA()
Perhatikan bahwa fungsi ini mirip dengan debug.getinfo, bagian yang tidak tersedia dari perpustakaan Lua standar yang melayani tujuan serupa.
Parameter
Thread yang dikembalikan oleh coroutine.create() .
Menentukan di tingkat apa dari tumpukan panggilan informasi yang dikembalikan harus dijelaskan.Nilai 1 mewakili fungsi yang memanggil debug.info() , nilai 2 mewakili fungsi yang memanggil fungsi itu, dan seterusnya.
Sebuah string yang menjelaskan apa yang harus diwakili informasi yang dikembalikan.Ini hanya harus berisi 0 atau 1 contoh karakter slnaf, masing-masing mewakili sepotong informasi:
Memberikan nilai
profilebegin
Memulai profiling untuk label MicroProfiler.
Parameter
Teks yang ditampilkan label MicroProfiler ini.
Memberikan nilai
profileend
Menghentikan profiling untuk label MicroProfiler paling baru yang debug.profilebegin() dibuka.
Memberikan nilai
setmemorycategory
Menugaskan nama tag khusus ke kategori memori thread saat ini di Konsol Pengembang.Berguna untuk menganalisis penggunaan memori dari beberapa thread dalam skrip yang sama yang sebaliknya akan dikumpulkan bersama di bawah tag/nama yang sama.Kembali nama kategori memori sebelumnya dari thread saat ini.
Parameter
Memberikan nilai
Kategori memori sebelumnya dari thread saat ini.
resetmemorycategory
Atur ulang tag yang ditugaskan oleh debug.setmemorycategory() ke nilai yang ditugaskan secara otomatis (biasanya, nama skrip).
Memberikan nilai
dumpcodesize
Menampilkan tabel ukuran kode asli dari fungsi dan skrip individu.Fungsi ini hanya tersedia di Bilah Perintah di Studio.Lebih banyak rincian dapat ditemukan di halaman Pembuatan Kode Asli.