debug
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Bietet einige grundlegende Funktionen für die Fehlersuche von Code in Roblox.Im Gegensatz zur debug Bibliothek, die in Lua nativ gefunden wird, wurde diese Version stark sandboxiert.
Zusammenfassung
Funktionen
Gibt eine Reihe von unbestimmten Formaten zurück, die den aktuellen Funktionsrufstapel beschreiben.
Gibt eine Reihe von unbestimmten Formaten zurück, die den aktuellen Funktionsrufstapel beschreiben.
Überquert den gesamten Stack des aktuellen Threads und gibt eine Zeichenkette zurück, die den Anrufstapel der Zielstufendetails enthält.
Überquert den gesamten Stack des aktuellen Threads und gibt eine Zeichenkette zurück, die den Anrufstapel der Zielfunktionsdetails enthält.
Überquert den gesamten Stapel des Zielthreads und gibt eine Zeichenkette zurück, die den Anrufstapel der Details der Zielebene enthält.
Beginnt mit der Profilerstellung für ein Beschriftung.
Stoppt die Profilerstellung für das neueste Label, das debug.profilebegin() geöffnet wurde.
Gibt die Name der aktiven Kategoriedes aktuellen Threads zurück.
Weist einen benutzerdefinierten Tag der Kategoriedes aktuellen Threads zu.
Setzt das Attribut, das von debug.setmemorycategory() dem automatisch zugewiesenen Wert zugewiesen wurde, auf den vom Skript festgelegten Wert zurück (normalerweise der Skriptname).
Zeigt eine Tabelle der nativen Codegröße einzelner Funktionen und Skripte an.
Funktionen
traceback
Gibt eine Rückverfolgung des aktuellen Funktionsaufrufstacks als String zurück; mit anderen Worten, eine Beschreibung der Funktionen, die bis zu diesem Punkt aufgerufen wurden.Während der Fehlersuche verhält sich dies wie eine Fehlersstack-Spur, stoppt aber nicht die Ausführung des Skript, das. PL: die Skripts.
Der level -Parameter gibt an, auf welchem Niveau des Anrufstacks zu berücksichtigen ist, mit 1 der Anruf von debug.traceback() selbst, 2 der Anruf der Funktion, die debug.traceback() aufruft, und so weiter.Siehe das Codebeispiel unten für ein Beispiel für sequenzielle Funktionsaufrufe.
Beachten Sie, dass diese Funktion oft ungenaue Ergebnisse zurückgibt (im Vergleich zum ursprünglichen Codes) und dass sich das Format der zurückgegebenen Rückverfolgung jederzeit ändern kann.Du solltest nicht den Rückgabewert für spezifische Informationen wie Skriptnamen oder Zeilennummern parsen.
Das folgende Beispiel enthält sequenzielle Funktionsaufrufe; fnB() wird aufgerufen, und es ruft fnA() auf, das dann debug.traceback() aufruft.
local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- Funktion fnB() aufrufen, um die Rückverfolgung zu beginnen
fnB()
Parameter
Rückgaben
Verfolgung des aktuellen Funktionsrufstacks.
traceback
Gibt eine Rückverfolgung des aktuellen Funktionsaufrufstacks als String zurück; mit anderen Worten, eine Beschreibung der Funktionen, die bis zu diesem Punkt aufgerufen wurden.Während der Fehlersuche verhält sich dies wie eine Fehlersstack-Spur, stoppt aber nicht die Ausführung des Skript, das. PL: die Skripts.
Der level -Parameter gibt an, auf welchem Niveau des Anrufstacks zu berücksichtigen ist, mit 1 der Anruf von debug.traceback() selbst, 2 der Anruf der Funktion, die debug.traceback() aufruft, und so weiter.Siehe das Codebeispiel unten für ein Beispiel für sequenzielle Funktionsaufrufe.
Beachten Sie, dass diese Funktion oft ungenaue Ergebnisse zurückgibt (im Vergleich zum ursprünglichen Codes) und dass sich das Format der zurückgegebenen Rückverfolgung jederzeit ändern kann.Du solltest nicht den Rückgabewert für spezifische Informationen wie Skriptnamen oder Zeilennummern parsen.
Das folgende Beispiel enthält sequenzielle Funktionsaufrufe; fnB() wird aufgerufen, und es ruft fnA() auf, das dann debug.traceback() aufruft.
local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- Funktion fnB() aufrufen, um die Rückverfolgung zu beginnen
fnB()
Parameter
Ein Thread, wie von coroutine.create() zurückgegeben.
Die erste Zeile der zurückgegebenen String.
Die Anzahl der Anrufe "auf" den Anrufstack, um zurückgeben.
Rückgaben
Verfolgung des aktuellen Funktionsrufstacks.
info
Ermöglicht die programmatische Inspektion des Anrufstacks.Diese Funktion unterscheidet sich von debug.traceback() darin, dass sie das Format der zurückgegebenen Daten garantiert.Dies ist nützlich für allgemeine Aufzeichnungs- und Filternzwecke sowie für das Senden der Daten an Systeme, die strukturierte Eingaben erwarten, wie z. B. Absturzaggregation.
local function fnA()
-- Ausgabe-Quellen-Identifikator ("s") und Zeile ("l") auf Ebenen 1 und 2
print(debug.info(1, "sl")) --> fnA() 3
print(debug.info(2, "sl")) --> fnA() 7
end
fnA()
Beachten Sie, dass diese Funktion ähnlich ist mit debuggen.getinfo, einem nicht verfügbaren Teil der Standard-Lua-Bibliothek, der einem ähnlichen Zweck dient.
Parameter
Bestimmt, auf welcher Ebene des Anrufstacks die zurückgegebenen Informationen beschrieben werden sollen.Ein Wert von 1 repräsentiert die Funktion, die debug.info() aufruft, ein Wert von 2 repräsentiert die Funktion, die diese Funktion aufgerufen hat, und so weiter.
Eine Zeichenkette, die beschreibt, was die zurückgegebenen Informationen repräsentieren sollen.Es darf nur 0 oder 1 Instanzen der Zeichen slnaf enthalten, die jeweils ein Stück Information darstellen:
- s ( Zeichenkette ) — Die Funktionsquellen-Identifikator, gleich dem vollen Namen des Skripts, in dem die Funktion definiert ist.
- n ( Zeichenfolge ) — Der Name der Funktion; kann nil für anonyme Funktionen und C-Funktionen ohne zugewiesenen Fehlerspeichername sein.
- a ( Zahl , booleschen ) — Arithmetik der Funktion, die sich auf die Anzahl der Parameter und darauf bezieht, ob die Funktion variabel ist.
- f ( Funktion ) — Die Funktion, die inspiziert wurde.
Rückgaben
info
Ermöglicht die programmatische Inspektion des Anrufstacks.Diese Funktion unterscheidet sich von debug.traceback() darin, dass sie das Format der zurückgegebenen Daten garantiert.Dies ist nützlich für allgemeine Aufzeichnungs- und Filternzwecke sowie für das Senden der Daten an Systeme, die strukturierte Eingaben erwarten, wie z. B. Absturzaggregation.
local function fnA()
end
local function fnB()
end
-- Ausgabelinie ("l"), Name ("n") und Identifikator ("f") für fnA() und fnB()
print(debug.info(fnA, "lnf")) --> 1 fnA-Funktion: 0x75e3d3c398a81252
print(debug.info(fnB, "lnf")) --> 5 fnB function: 0x6022a6dc5ccf4ab2
Beachten Sie, dass diese Funktion ähnlich ist mit debuggen.getinfo, einem nicht verfügbaren Teil der Standard-Lua-Bibliothek, der einem ähnlichen Zweck dient.
Parameter
Die Funktion des Anrufstacks, die die zurückgegebenen Informationen beschreiben soll.
Eine Zeichenkette, die beschreibt, was die zurückgegebenen Informationen repräsentieren sollen.Es darf nur 0 oder 1 Instanzen der Zeichen slnaf enthalten, die jeweils ein Stück Information darstellen:
- s ( Zeichenkette ) — Die Funktionsquellen-Identifikator, gleich dem vollen Namen des Skripts, in dem die Funktion definiert ist.
- n ( Zeichenfolge ) — Der Name der Funktion; kann nil für anonyme Funktionen und C-Funktionen ohne zugewiesenen Fehlerspeichername sein.
- a ( Zahl , booleschen ) — Arithmetik der Funktion, die sich auf die Anzahl der Parameter und darauf bezieht, ob die Funktion variabel ist.
- f ( Funktion ) — Die Funktion, die inspiziert wurde.
Rückgaben
info
Ermöglicht die programmatische Inspektion des Anrufstacks.Diese Funktion unterscheidet sich von debug.traceback() darin, dass sie das Format der zurückgegebenen Daten garantiert.Dies ist nützlich für allgemeine Aufzeichnungs- und Filternzwecke sowie für das Senden der Daten an Systeme, die strukturierte Eingaben erwarten, wie z. B. Absturzaggregation.
local function fnA()
-- Ausgabe-Quellen-Identifikator ("s") und Zeile ("l") auf Ebenen 1 und 2
print(debug.info(1, "sl")) --> fnA() 3
print(debug.info(2, "sl")) --> fnA() 7
end
fnA()
Beachten Sie, dass diese Funktion ähnlich ist mit debuggen.getinfo, einem nicht verfügbaren Teil der Standard-Lua-Bibliothek, der einem ähnlichen Zweck dient.
Parameter
Ein Thread, wie von coroutine.create() zurückgegeben.
Bestimmt, auf welcher Ebene des Anrufstacks die zurückgegebenen Informationen beschrieben werden sollen.Ein Wert von 1 repräsentiert die Funktion, die debug.info() aufruft, ein Wert von 2 repräsentiert die Funktion, die diese Funktion aufgerufen hat, und so weiter.
Eine Zeichenkette, die beschreibt, was die zurückgegebenen Informationen repräsentieren sollen.Es darf nur 0 oder 1 Instanzen der Zeichen slnaf enthalten, die jeweils ein Stück Information darstellen:
- s ( Zeichenkette ) — Die Funktionsquellen-Identifikator, gleich dem vollen Namen des Skripts, in dem die Funktion definiert ist.
- n ( Zeichenfolge ) — Der Name der Funktion; kann nil für anonyme Funktionen und C-Funktionen ohne zugewiesenen Fehlerspeichername sein.
- a ( Zahl , booleschen ) — Arithmetik der Funktion, die sich auf die Anzahl der Parameter und darauf bezieht, ob die Funktion variabel ist.
- f ( Funktion ) — Die Funktion, die inspiziert wurde.
Rückgaben
profilebegin
Beginnt mit der Profilerstellung für ein Beschriftung.
Parameter
Der Text, den diese MicroProfiler-Etikette anzeigt.
Rückgaben
profileend
Stoppt die Profilerstellung für das neueste MicroProfiler-Label, das debug.profilebegin() geöffnet wurde.
Rückgaben
setmemorycategory
Weist einen benutzerdefinierten Tagnamen für die Speicherregion des aktuellen Threads in der Entwickler-Konsole zu.Nützlich für die Analyse der Speicherverwendung mehrerer Threads in demselben Skript, die sonst unter demselben Tag/Namen zusammengefasst würden.Gibt den Namen der vorherigen Kategoriedes aktuellen Threads zurück.
Parameter
Rückgaben
Die vorherige Kategoriedes aktuellen Threads.
resetmemorycategory
Setzt das Attribut, das von debug.setmemorycategory() dem automatisch zugewiesenen Wert zugewiesen wurde, auf den vom Skript festgelegten Wert zurück (normalerweise der Skriptname).
Rückgaben
dumpcodesize
Zeigt eine Tabelle der nativen Codegröße einzelner Funktionen und Skripte an.Diese Funktion ist nur in der Kommandoleiste in Studio verfügbar.Weitere Details finden Sie auf der Native Code-Generierung Seite.