关于Lua无法调试总结。
这个问题困扰我很久了,特此发帖。
首先我根据官网教程使用 ZeroBrane Studio 发现无法单步调试。
后面就陆陆续续换了很多工具,LuaPanda ,EmmyLua 都不行。但是 EmmyLua 有方法检查为啥不可以调试。
首先我修改 mobdebug.lua 里的两个函数 如下。
local function set_breakpoint(file, line)
print('set_breakpoint file: '..file.." line: "..line)
if file == '-' and lastfile then file = lastfile
elseif iscasepreserving then file = string.lower(file) end
if not breakpoints[line] then breakpoints[line] = {} end
breakpoints[line][file] = true
end
local function has_breakpoint(file, line)
print('has_breakpoint file: '..file.." line: "..line)
return breakpoints[line]
and breakpoints[line][iscasepreserving and string.lower(file) or file]
end
分别在 set_breakpoint 和 has_breakpoint 函数,添加了打印日志。
打印之后,发现多出红色方框内的东西。
这个时候就需要检查一下加载lua代码的chunkname参数了。 cocos2dx 修改如下
首先找到此函数:
int cocos2dx_lua_loader(lua_State *L)
如果大家还有问题可以加群找组织:
最后说一句,不管任何程序断点失效时,都应该第一时间查看 chunkname 是否合 setbreakpoint 路径是否能对的上。
使用BabeLua时,发现chunkname必须是绝对路径。所以我又加了一行代码
// Babelua插件需要绝对路径
chunkName = utils->fullPathForFilename(chunkName);
EmmyLua QQ群 529914962 (管理员很热情。)
LuaPanda QQ群:974257225 (腾讯家的产品,一直加不上。)