0905 - lite 更好的调试

"你以后想成为什么样的人?"
"什么意思,难道我以后就不能成为我自己吗?"

除了上一篇提到的支持 zbs 调试,这是在开发遇到瓶颈的时候才会拿出来用。因为 zbs 的编辑功能是在和 sublime 不能相比。

在日常开发中,还是依靠 print 输出调试居多,但是默认调试器的堆栈信息略少。于是增加了一个 StackTracePlus 的 Lua 库。

如果在发生崩溃时,模拟器能提示一下,甚至点击一下就能够跳转到响应的文件行数,那就很棒了。
方案如下,目前只支持 Mac 的 Sublime 编辑器:

__G__TRACKBACK__ = function ( msg )

    local message = msg
    local msg, origin_error = debug.traceback(msg, 3)
    print(msg)

    -- report lua exception
    if device.platform == 'mac' then
        local msg = debug.getinfo(2)
        local info = cc.Label:createWithSystemFont(message, 'sans', 32)
        info:setWidth(display.width)
        info:setAnchorPoint(cc.p(0,1))
        info:setPosition(0, display.height)
        info:setTextColor(cc.c4b(255,0,0,255))
        cc.Director:getInstance():getRunningScene():addChild(info, 998)

        local function onTouchBegan(touch, event)
            return true
        end
        local function onTouchEnded(touch, event)
            os.execute(string.format('subl %s:%d', cc.FileUtils:getInstance():fullPathForFilename(msg.source), msg.currentline))
            info:removeSelf()
        end

        local listener = cc.EventListenerTouchOneByOne:create()
        listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN)
        listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )
        local eventDispatcher = info:getEventDispatcher()
        eventDispatcher:addEventListenerWithSceneGraphPriority(listener, info)
    end

    return msg
end

https://github.com/c0i/cocos2dx-lite/blob/dev/src/main.lua#L31-L52

投放到群里,反应不太强烈,都在搞各种山寨币。把这个小工具先放在自己的日常工作里面试一下,看看究竟能不能带来帮助吧。

你可能感兴趣的:(0905 - lite 更好的调试)