Bạn sẽ có thể gỡ lỗi ứng dụng của mình bằng cách sử dụng ZeroBrane Studio bằng cách theo dõi instructions for Lua 5.2 debugging. Lưu ý rằng bạn sẽ cần phải có luasocket biên dịch với Lua5.2. (Sự cố mà bạn thấy có thể là do ứng dụng của bạn tải luasocket được biên dịch dựa trên Lua5.1, mà lần lượt tải Lua5.1 DLL hoặc không tìm thấy các ký hiệu bắt buộc.)
Nếu bạn không muốn biên dịch luasocket, bạn có thể lấy mã nhị phân cho Windows/OSX/Linux từ this folder and its subfolders; chỉ cần đảm bảo rằng các thư viện này nằm trong LUA_CPATH trước bất kỳ thư mục nào có thể có luasocket được biên dịch dựa trên Lua5.1.
[Cập nhật dựa trên thảo luận trò chuyện] Lý do bạn có thể gặp phải nhiều sự cố VM là ứng dụng của bạn có thể biên dịch tĩnh Lua thông dịch viên. Sau đó bạn tải luasocket (trực tiếp hoặc thông qua mobdebug), được biên dịch với lua52.dll, tải một bản sao của trình thông dịch. Để tránh điều này, bạn có hai lựa chọn: (1) biên dịch luasocket vào ứng dụng của bạn giống như cách bạn bao gồm thông dịch viên lua; bạn sẽ không cần bất cứ điều gì khác ngoại trừ một tập tin mobdebug.lua để gỡ lỗi ứng dụng của bạn, hoặc (2) sử dụng dll proxy; nó sẽ trông giống như lua52.dll, nhưng sẽ thực sự proxy các cuộc gọi của bạn vào thư viện lua được biên dịch tĩnh của bạn, tránh các vấn đề với nhiều máy ảo. proxy dll là dành cho Lua 5.1, nhưng bạn có thể tinh chỉnh kịch bản để làm cho nó hoạt động cho Lua 5.2.
(Nếu thông dịch viên của bạn không được biên dịch tĩnh, bạn vẫn có thể nhận được hai thông dịch viên nếu Lua DLL bạn tải được đặt tên khác nhau từ lua52.dll.)
Nguồn
2013-09-08 05:45:33
Điều đó không hiệu quả đối với tôi. Chương trình của tôi bị treo ngay khi tôi gọi lua_call. Đây là những gì tôi đã làm, tôi đã đặt mã này vào tệp .lua của tôi 'package.path = package.path .." C: /ZeroBraneStudio/lualibs/mobdebug/mobdebug.lua " package.cpath = package.cpath .. "C:/ZeroBraneStudio/bin/clibs52/socket/?. dll" yêu cầu ('mobdebug'). Start() 'và lỗi tôi nhận được là' PANIC: lỗi không được bảo vệ trong cuộc gọi đến Lua API (main.lua: 3 : cố gắng lập chỉ mục toàn cầu 'gói' (giá trị nil)) ' – Caesar
' cố gắng lập chỉ mục gói 'toàn cầu' (giá trị nil) ': vậy, điều gì đã xảy ra với gói' global' trong môi trường của bạn? –
Ngoài ra, bạn có thể muốn thêm '... clibs52/mime/?. dll' vì nó có thể được tải từ' socket.lua' và bạn muốn chắc chắn rằng nó được tải từ 'clibs52'. Có thể thuận tiện hơn khi chuyển cuộc thảo luận khắc phục sự cố sang [Ma trận ZeroBrane Studio] (http://studio.zerobrane.com/community.html). –