debug
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Cung cấp một vài chức năng cơ bản để gỡ lỗi mã trong Roblox.Không giống như thư viện debug được tìm thấy trong Lua mặc định, phiên bản này đã bị hạn chế nghiêm ngặt.
Tóm Tắt
Chức Năng
Trả về một chuỗi định dạng không xác định mô tả chồng gọi chức năng hiện tại.
Trả về một chuỗi định dạng không xác định mô tả chồng gọi chức năng hiện tại.
Xuyên suốt toàn bộ chồng các luồng hiện tại và trả về một chuỗi chứa chồng gọi của cấp độ mục tiêu chi tiết.
Xuyên suốt toàn bộ chồng các tiến trình hiện tại và trả về một chuỗi chứa chồng gọi của chi tiết chức năng mục tiêu.
Xuyên suốt toàn bộ chồng các tiến trình mục tiêu và trả về một chuỗi chứa chồng gọi của các chi tiết cấp độ mục tiêu.
Bắt đầu phân tích cho một nhãn.
Dừng việc phân tích cho nhãn mới nhất mà debug.profilebegin() đã mở.
Trả về tên của thành phần bộ nhớ hoạt động của luồng hiện tại.
Gán một thẻ tùy chỉnh cho danh thể loạibộ nhớ của luồng hiện tại.
Đặt lại thẻ được gán bởi debug.setmemorycategory() đến giá trị được gán tự động (thông thường, tên của kịch bản).
Hiển thị một bảng kích thước mã bản địa của các chức năng và kịch bản riêng lẻ.
Chức Năng
traceback
Trả về một chuỗi dấu đi lại của chức năng gọi hiện tại như một chuỗi; theo cách khác, một mô tả về các chức năng đã được gọi cho đến thời điểm này.Trong quá trình gỡ lỗi, nó hành xử giống như một đường dẫn theo dấu lỗi nhưng không ngăn chặn việc thực thi của kịch bản.
Tham số level định cấp độ cuộc gọi nào cần xem xét, với 1 được gọi là cuộc gọi của debug.traceback() chính, 2 được gọi là cuộc gọi của chức năng gọi debug.traceback() , và như vậy.Xem mẫu mã code bên dưới để có một ví dụ về cuộc gọi chức năng tuần tự.
Lưu ý rằng chức năng này thường trả về kết quả không chính xác (so với mã nguồn ban đầu) và định dạng của traceback trả về có thể thay đổi bất cứ lúc nào.Bạn không nên không phân tích giá trị trả về cho thông tin cụ thể như tên của tập lệnh hoặc số dòng.
Ví dụ sau bao gồm các cuộc gọi chức năng tuần tự; fnB() được gọi, và nó gọi fnA() mà sau đó gọi debug.traceback() .
local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- Gọi chức năng fnB() để bắt đầu truy xuất
fnB()
Tham Số
Lợi Nhuận
Xác nhận chuỗi cuộc gọi chức năng hiện tại.
traceback
Trả về một chuỗi dấu đi lại của chức năng gọi hiện tại như một chuỗi; theo cách khác, một mô tả về các chức năng đã được gọi cho đến thời điểm này.Trong quá trình gỡ lỗi, nó hành xử giống như một đường dẫn theo dấu lỗi nhưng không ngăn chặn việc thực thi của kịch bản.
Tham số level định cấp độ cuộc gọi nào cần xem xét, với 1 được gọi là cuộc gọi của debug.traceback() chính, 2 được gọi là cuộc gọi của chức năng gọi debug.traceback() , và như vậy.Xem mẫu mã code bên dưới để có một ví dụ về cuộc gọi chức năng tuần tự.
Lưu ý rằng chức năng này thường trả về kết quả không chính xác (so với mã nguồn ban đầu) và định dạng của traceback trả về có thể thay đổi bất cứ lúc nào.Bạn không nên không phân tích giá trị trả về cho thông tin cụ thể như tên của tập lệnh hoặc số dòng.
Ví dụ sau bao gồm các cuộc gọi chức năng tuần tự; fnB() được gọi, và nó gọi fnA() mà sau đó gọi debug.traceback() .
local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- Gọi chức năng fnB() để bắt đầu truy xuất
fnB()
Tham Số
Một luồng như được trả lại bởi coroutine.create() .
Dòng đầu tiên của chuỗi trả về.
Số lượng cuộc gọi "lên" chồng cuộc gọi để trả lại.
Lợi Nhuận
Xác nhận chuỗi cuộc gọi chức năng hiện tại.
info
Cho phép kiểm tra chương trình của chồng cuộc gọi.Chức năng này khác với debug.traceback() vì nó đảm bảo định dạng của dữ liệu nó trả về.Điều này hữu ích cho các mục đích ghi nhận và lọc chung cũng như cho việc gửi dữ liệu đến các hệ thống mong đợi nhập dữ liệu có cấu trúc, chẳng hạn như tổng hợp sự cố.
local function fnA()
-- Nhận dạng nguồn xuất ("s") và dòng ("l") tại cấp 1 và 2
print(debug.info(1, "sl")) --> fnA() 3
print(debug.info(2, "sl")) --> fnA() 7
end
fnA()
Lưu ý rằng chức năng này tương tự với debug.getinfo, một phần không có sẵn của thư viện Lua tiêu chuẩn phục vụ mục đích tương tự.
Tham Số
Xác định ở cấp độ nào của chồng gọi thông tin được trả về phải mô tả.Một giá trị của 1 đại diện cho chức năng đang gọi debug.info() , một giá trị của 2 đại diện cho chức năng đã gọi chức năng đó, và như vậy.
Một chuỗi mô tả thông tin trả về nên đại diện cho điều gì.Nó chỉ có thể chứa 0 hoặc 1 ví dụ về các nhân vật slnaf, mỗi ví dụ đại diện cho một phần thông tin:
Lợi Nhuận
info
Cho phép kiểm tra chương trình của chồng cuộc gọi.Chức năng này khác với debug.traceback() vì nó đảm bảo định dạng của dữ liệu nó trả về.Điều này hữu ích cho các mục đích ghi nhận và lọc chung cũng như cho việc gửi dữ liệu đến các hệ thống mong đợi nhập dữ liệu có cấu trúc, chẳng hạn như tổng hợp sự cố.
local function fnA()
end
local function fnB()
end
-- Dòng ra ("l"), tên ("n") và nhận dạng ("f") cho cả fnA() và fnB()
print(debug.info(fnA, "lnf")) --> 1 chức năng fnA: 0x75e3d3c398a81252
print(debug.info(fnB, "lnf")) --> 5 fnB function: 0x6022a6dc5ccf4ab2
Lưu ý rằng chức năng này tương tự với debug.getinfo, một phần không có sẵn của thư viện Lua tiêu chuẩn phục vụ mục đích tương tự.
Tham Số
Chức năng của chồng cuộc gọi mà thông tin được trả về phải mô tả.
Một chuỗi mô tả thông tin trả về nên đại diện cho điều gì.Nó chỉ có thể chứa 0 hoặc 1 ví dụ về các nhân vật slnaf, mỗi ví dụ đại diện cho một phần thông tin:
Lợi Nhuận
info
Cho phép kiểm tra chương trình của chồng cuộc gọi.Chức năng này khác với debug.traceback() vì nó đảm bảo định dạng của dữ liệu nó trả về.Điều này hữu ích cho các mục đích ghi nhận và lọc chung cũng như cho việc gửi dữ liệu đến các hệ thống mong đợi nhập dữ liệu có cấu trúc, chẳng hạn như tổng hợp sự cố.
local function fnA()
-- Nhận dạng nguồn xuất ("s") và dòng ("l") tại cấp 1 và 2
print(debug.info(1, "sl")) --> fnA() 3
print(debug.info(2, "sl")) --> fnA() 7
end
fnA()
Lưu ý rằng chức năng này tương tự với debug.getinfo, một phần không có sẵn của thư viện Lua tiêu chuẩn phục vụ mục đích tương tự.
Tham Số
Một luồng như được trả lại bởi coroutine.create() .
Xác định ở cấp độ nào của chồng gọi thông tin được trả về phải mô tả.Một giá trị của 1 đại diện cho chức năng đang gọi debug.info() , một giá trị của 2 đại diện cho chức năng đã gọi chức năng đó, và như vậy.
Một chuỗi mô tả thông tin trả về nên đại diện cho điều gì.Nó chỉ có thể chứa 0 hoặc 1 ví dụ về các nhân vật slnaf, mỗi ví dụ đại diện cho một phần thông tin:
Lợi Nhuận
profilebegin
Bắt đầu phân tích cho một nhãn MicroProfiler.
Tham Số
Văn bản mà nhãn MicroProfiler hiển thị.
Lợi Nhuận
profileend
Dừng việc phân tích cho nhãn MicroProfiler mới nhất đã được mở.
Lợi Nhuận
setmemorycategory
Gán một tên thẻ tùy chỉnh cho danh mục bộ nhớ của luồng hiện tại trong Bảng điều khiển Nhà phát triển.Hữu ích để phân tích sử dụng bộ nhớ của nhiều luồng trong cùng một tập lệnh mà nếu không sẽ được nhóm lại dưới cùng một thẻ/tên.Trả về tên của danh mục bộ nhớ trước của luồng hiện thể loại.
Tham Số
Lợi Nhuận
Danh thể loạibộ nhớ trước của tiền thớt hiện tại.
resetmemorycategory
Đặt lại thẻ được gán bởi debug.setmemorycategory() đến giá trị được gán tự động (thông thường, tên của kịch bản).
Lợi Nhuận
dumpcodesize
Hiển thị một bảng kích thước mã bản địa của các chức năng và kịch bản riêng lẻ.Chức năng này chỉ có sẵn trong Thanh lệnh trong Studio.Thêm chi tiết có thể được tìm thấy trên trang Tạo mã bản địa.