Roblox でコードをデバッグするためのいくつかの基本機能を提供します。Lua のネイティブバージョンで見つかる debug ライブラリとは異なり、このバージョンは強力にサンドボックス化されています。
概要
関数
現在の機能呼び出しスタックを説明する undefined 形式のストリングを返します。
現在の機能呼び出しスタックを説明する undefined 形式のストリングを返します。
現在のスレッドのスタック全体を通過し、ターゲットレベルの詳細の呼び出しスタックを含む文字列を返します。
現在のスレッドのスタック全体を通過し、ターゲット機能の呼び出しスタックの詳細を含む文字列を返します。
ターゲットスレッドの全スタックを通過し、ターゲットレベルの詳細の呼び出しスタックを含む文字列を返します。
ラベルのプロファイル化を開始します。
debug.profilebegin() が開いた最新ラベルのプロファイルを停止します。
現在のスレッドのアクティブメモリカテゴリの名前を返します。
現在のスレッドのメモリカテゴリにカスタムタグを割り当てます。
debug.setmemorycategory() に割り当てられたタグを自動割り当てられた値 (通常、スクリプト名) にリセットします。
個々の機能とスクリプトのネイティブコードサイズのテーブルを表示します。
関数
traceback
現在の機能呼び出しスタックのトレースバックを文字列として返し、すなわち、この時点まで呼び出された機能の説明を返します。デバッグ中、これはエラースタックトレースのように動作しますが、スクリプトの実行を停止しません。
level パラメータは、考慮するコールスタックレベルを指定し、1 はコールの debug.traceback() 自体、2 は機能呼び出しの debug.traceback() 、などを指定します。以下のコードサンプルを参照して、順次機能呼び出しの例を見てください。
この機能は、不正確な結果 (オリジナルソースコードと比較) を頻繁に返し、返されたトレースバックの形式はいつでも変更される可能性があることに注意してください。スクリプト名や行番号などの特定の情報の返却値を解析してはならない ない こと。
次の例にはシーケンシャル機能呼び出しが含まれています; fnB() が呼び出され、そして fnA() が呼び出され、それから debug.traceback() が呼び出されます。
local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- トレースバックを開始するには、fnB() 関数を呼び出す
fnB()
戻り値
現在の機能呼び出しスタックのトレースバック。
traceback
現在の機能呼び出しスタックのトレースバックを文字列として返し、すなわち、この時点まで呼び出された機能の説明を返します。デバッグ中、これはエラースタックトレースのように動作しますが、スクリプトの実行を停止しません。
level パラメータは、考慮するコールスタックレベルを指定し、1 はコールの debug.traceback() 自体、2 は機能呼び出しの debug.traceback() 、などを指定します。以下のコードサンプルを参照して、順次機能呼び出しの例を見てください。
この機能は、不正確な結果 (オリジナルソースコードと比較) を頻繁に返し、返されたトレースバックの形式はいつでも変更される可能性があることに注意してください。スクリプト名や行番号などの特定の情報の返却値を解析してはならない ない こと。
次の例にはシーケンシャル機能呼び出しが含まれています; fnB() が呼び出され、そして fnA() が呼び出され、それから debug.traceback() が呼び出されます。
local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- トレースバックを開始するには、fnB() 関数を呼び出す
fnB()
パラメータ
戻り値
現在の機能呼び出しスタックのトレースバック。
info
呼び出しスタックのプログラマティック検査を許可します。この機能は、返すデータのフォーマットを保証する点で debug.traceback() と異なります。これは、一般的なログ記録とフィルタリングの目的だけでなく、クラッシュアグレゲーションなど、構造化入力を期待するシステムにデータを送信する目的にも役立ちます。
local function fnA()
-- 出力ソース識別子 ("s") と行 ("l") レベル 1 と 2
print(debug.info(1, "sl")) --> fnA() 3
print(debug.info(2, "sl")) --> fnA() 7
end
fnA()
この機能は、同様の目的を果たす標準の Lua ライブラリの debug.getinfo と似ていることに注意してください。
パラメータ
呼び出しスタックのどのレベルで返された情報が記述する必要があるかを決定します。値 1 は、debug.info() を呼んでいる関数を表し、値 2 は、その関数を呼んだ関数を表し、など。
戻り値
info
呼び出しスタックのプログラマティック検査を許可します。この機能は、返すデータのフォーマットを保証する点で debug.traceback() と異なります。これは、一般的なログ記録とフィルタリングの目的だけでなく、クラッシュアグレゲーションなど、構造化入力を期待するシステムにデータを送信する目的にも役立ちます。
local function fnA()
end
local function fnB()
end
-- fnA() と fnB() の両方に対する出力ライン ("l")、名前 ("n")、および識別子 ("f")
print(debug.info(fnA, "lnf")) --> 1 fnA 関数: 0x75e3d3c398a81252
print(debug.info(fnB, "lnf")) --> 5 fnB function: 0x6022a6dc5ccf4ab2
この機能は、同様の目的を果たす標準の Lua ライブラリの debug.getinfo と似ていることに注意してください。
パラメータ
返された情報が記述する呼び出しスタックの機能。
戻り値
info
呼び出しスタックのプログラマティック検査を許可します。この機能は、返すデータのフォーマットを保証する点で debug.traceback() と異なります。これは、一般的なログ記録とフィルタリングの目的だけでなく、クラッシュアグレゲーションなど、構造化入力を期待するシステムにデータを送信する目的にも役立ちます。
local function fnA()
-- 出力ソース識別子 ("s") と行 ("l") レベル 1 と 2
print(debug.info(1, "sl")) --> fnA() 3
print(debug.info(2, "sl")) --> fnA() 7
end
fnA()
この機能は、同様の目的を果たす標準の Lua ライブラリの debug.getinfo と似ていることに注意してください。
パラメータ
coroutine.create() によって返されたスレッド。
呼び出しスタックのどのレベルで返された情報が記述する必要があるかを決定します。値 1 は、debug.info() を呼んでいる関数を表し、値 2 は、その関数を呼んだ関数を表し、など。
戻り値
dumpcodesize
個々の機能とスクリプトのネイティブコードサイズのテーブルを表示します。この機能は、Studio のコマンドバーでのみ利用できます。詳細は、ネイティブコード生成 ページで見つけることができます。