debug
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Zapewnia kilka podstawowych funkcji do debugowania kodu w Roblox.W przeciwieństwie do biblioteki debug znalezionej w Lua natywnie, ta wersja została mocno zablokowana.
Podsumowanie
Funkcje
Zwraca ciąg nieokreślonego formatu, który opisuje obecny stos wezwań funkcji.
Zwraca ciąg nieokreślonego formatu, który opisuje obecny stos wezwań funkcji.
Przeszukuje cały stos obecnego wątku i zwraca ciąg zawierający stos wezwania szczegółów poziomu docelowego.
Przeszukuje cały stos obecnego wątku i zwraca ciąg zawierający stos wezwania szczegółów funkcji docelowej.
Przeszukuje cały stos wątku docelowego i zwraca ciąg zawierający stos wezwania szczegółów poziomu docelowego.
Zaczyna profilować dla etykiety.
Zatrzymuje profilowanie dla najnowszej etykiety, którą debug.profilebegin() otworzył.
Zwraca nazwę aktywnej kategoriapamięci obecnego wątku.
Nadaje niestandardową etykietę do kategoriapamięci obecnego wątku.
Zresetuj tag przydzielony przez debug.setmemorycategory() do automatycznie przypisanej wartości (zwykle nazwa skryptu).
Wyświetla tabelę rozmiaru kodu natywnego poszczególnych funkcji i skryptów.
Funkcje
traceback
Zwraca ścieżkę powrotną do obecnego stosu wezwania funkcji jako ciąg; innymi słowy, opis funkcji, które zostały wezwane do tej pory.Podczas debugowania zachowuje się to jak ślad stosu błędów, ale nie powstrzymuje wykonania skryptu.
Parametr level określa poziom stosu wezwania, który należy rozważyć, z 1 być wezwaniem debug.traceback() samego, 2 być wezwaniem funkcji, która wywołuje debug.traceback() i tak dalej.Zobacz przykład kodu poniżej dla przykładu wezwań funkcji sekwencyjnych.
Zauważ, że ta funkcja często zwraca niedokładne wyniki (w porównaniu do oryginalnego kodu źródłowego) i że format powrotu śledzenia może się zmienić w dowolnym momencie.Nie powinieneś nie analizować wartości zwrotnej dla konkretnych informacji, takich jak nazwy skryptów lub numery linii.
Poniższy przykład zawiera kolejne wezwania funkcji; fnB() jest wzywany, a następnie wzywa fnA(), które następnie wzywa debug.traceback().
local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- Wezwij funkcję fnB() aby rozpocząć śledzenie
fnB()
Parametry
Zwroty
Śledzenie stosu wezwań funkcji obecnej.
traceback
Zwraca ścieżkę powrotną do obecnego stosu wezwania funkcji jako ciąg; innymi słowy, opis funkcji, które zostały wezwane do tej pory.Podczas debugowania zachowuje się to jak ślad stosu błędów, ale nie powstrzymuje wykonania skryptu.
Parametr level określa poziom stosu wezwania, który należy rozważyć, z 1 być wezwaniem debug.traceback() samego, 2 być wezwaniem funkcji, która wywołuje debug.traceback() i tak dalej.Zobacz przykład kodu poniżej dla przykładu wezwań funkcji sekwencyjnych.
Zauważ, że ta funkcja często zwraca niedokładne wyniki (w porównaniu do oryginalnego kodu źródłowego) i że format powrotu śledzenia może się zmienić w dowolnym momencie.Nie powinieneś nie analizować wartości zwrotnej dla konkretnych informacji, takich jak nazwy skryptów lub numery linii.
Poniższy przykład zawiera kolejne wezwania funkcji; fnB() jest wzywany, a następnie wzywa fnA(), które następnie wzywa debug.traceback().
local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- Wezwij funkcję fnB() aby rozpocząć śledzenie
fnB()
Parametry
Wątek zwrócony przez coroutine.create() .
Pierwsza linia zwróconej ciąg.
Liczba wezwań "w górę" stosu wezwania do zwrotu.
Zwroty
Śledzenie stosu wezwań funkcji obecnej.
info
Pozwala na programowe inspekcję stosu wezwania.Funkcja ta różni się od debug.traceback() w tym, że gwarantuje format danych, które zwraca.Jest to przydatne do ogólnych celów rejestracji i filtrowania, a także do wysyłania danych do systemów oczekujących na strukturalne wejście, takich jak agregacja wypadków.
local function fnA()
-- Identyfikator źródła wyjścia ("s") i linia ("l") na poziomach 1 i 2
print(debug.info(1, "sl")) --> fnA() 3
print(debug.info(2, "sl")) --> fnA() 7
end
fnA()
Zauważ, że ta funkcja jest podobna do debug.getinfo, niedostępnej części standardowej biblioteki Lua, która służy podobnemu celowi.
Parametry
Określa na jakim poziomie stosu wezwania informacje zwrotne powinny być opisane.Wartość 1 reprezentuje funkcję, która dzwoni debug.info(), wartość 2 reprezentuje funkcję, która wezwała tę funkcję, i tak dalej.
Sznurek, który opisuje to, co powinna reprezentować zwrócona informacja.Musi zawierać tylko 0 lub 1 instancje znaków slnaf, każda z nich reprezentuje kawałek informacji:
Zwroty
info
Pozwala na programowe inspekcję stosu wezwania.Funkcja ta różni się od debug.traceback() w tym, że gwarantuje format danych, które zwraca.Jest to przydatne do ogólnych celów rejestracji i filtrowania, a także do wysyłania danych do systemów oczekujących na strukturalne wejście, takich jak agregacja wypadków.
local function fnA()
end
local function fnB()
end
-- Linia wyjściowa ("l"), nazwa ("n") i identyfikator ("f") dla obu fnA() i fnB()
print(debug.info(fnA, "lnf")) --> 1 funkcja fnA: 0x75e3d3c398a81252
print(debug.info(fnB, "lnf")) --> 5 fnB function: 0x6022a6dc5ccf4ab2
Zauważ, że ta funkcja jest podobna do debug.getinfo, niedostępnej części standardowej biblioteki Lua, która służy podobnemu celowi.
Parametry
Funkcja stosu wezwania, której informacje zwrócone powinny opisać.
Sznurek, który opisuje to, co powinna reprezentować zwrócona informacja.Musi zawierać tylko 0 lub 1 instancje znaków slnaf, każda z nich reprezentuje kawałek informacji:
Zwroty
info
Pozwala na programowe inspekcję stosu wezwania.Funkcja ta różni się od debug.traceback() w tym, że gwarantuje format danych, które zwraca.Jest to przydatne do ogólnych celów rejestracji i filtrowania, a także do wysyłania danych do systemów oczekujących na strukturalne wejście, takich jak agregacja wypadków.
local function fnA()
-- Identyfikator źródła wyjścia ("s") i linia ("l") na poziomach 1 i 2
print(debug.info(1, "sl")) --> fnA() 3
print(debug.info(2, "sl")) --> fnA() 7
end
fnA()
Zauważ, że ta funkcja jest podobna do debug.getinfo, niedostępnej części standardowej biblioteki Lua, która służy podobnemu celowi.
Parametry
Wątek zwrócony przez coroutine.create() .
Określa na jakim poziomie stosu wezwania informacje zwrotne powinny być opisane.Wartość 1 reprezentuje funkcję, która dzwoni debug.info(), wartość 2 reprezentuje funkcję, która wezwała tę funkcję, i tak dalej.
Sznurek, który opisuje to, co powinna reprezentować zwrócona informacja.Musi zawierać tylko 0 lub 1 instancje znaków slnaf, każda z nich reprezentuje kawałek informacji:
Zwroty
profilebegin
Rozpoczyna profilowanie dla etykiety MicroProfiler.
Parametry
Tekst, który ten Mikroprofilownik etykieta wyświetla.
Zwroty
profileend
Zatrzymuje profilowanie dla najnowszej etykiety MicroProfiler, którą debug.profilebegin() otwarto.
Zwroty
setmemorycategory
Nadaje niestandardową nazwę tagu kategorii pamięci obecnego wątku w konsoli programisty Developer Console.Przydatne do analizy zużycia pamięci wielu wątków w tym samym skrypcie, które w przeciwnym razie zostaną zgrupowane pod tym samym tagiem/nazwą.Zwraca nazwę poprzedniej kategoriapamięci obecnego wątku.
Parametry
Zwroty
Poprzednia kategoria pamięci obecnego wątku.
resetmemorycategory
Zresetuj tag przydzielony przez debug.setmemorycategory() do automatycznie przypisanej wartości (zwykle nazwa skryptu).
Zwroty
dumpcodesize
Wyświetla tabelę rozmiaru kodu natywnego poszczególnych funkcji i skryptów.Funkcja ta jest dostępna tylko w pasku poleceń w Studio.Więcej szczegółów można znaleźć na stronie Generowanie kodu natywnego.