美文网首页
Ulua&ToLua 调试

Ulua&ToLua 调试

作者: LuaIde | 来源:发表于2017-07-09 18:22 被阅读0次

准备工作

调试代码下载

调试示例下载

===================================

生成调试配置

这里很多同学出现过一个问题,就是同时下载了很多的lua 调试插件,所以这里需要注意 如果使用luaide进行lua调试,
需要先禁用或卸载其他的lua调试插件.

步骤:

  1. 如果你没有生成过调试配置 那么先生成 演示
    演示
    演示
    Ulua&ToLua
  2. 如果你已经有调试配置了可修改/删除工作目录下的.vscode/launch.json
  3. 根据调试需要选择本地或者远程调试即可

attach 远程调试 Unity 调试都为远程调试 不分平台请注意

 {
    "name": "Unity-ulua",
    "type": "lua",
    "request": "attach",
    "runtimeType": "Unity",
    "localRoot": "${workspaceRoot}",
    "fileExtname": ".lua",
    "port": 7003,
    "printType": 1
}
  1. name:命名调试器选择项名字
  2. type: 默认配置不需要修改
  3. request:默认配置不需要修改
  4. runtimeType:默认配置不需要修改
  5. localRoot: 与本地调试不同,远程调试 localRoot 当做scriptMap 一般情况下默认为 ${workspaceRoot} 即可,如果你的代码目录是 ${workspaceRoot} 下载的某个路径 也可明确指定 如 ${workspaceRoot}/scripts
  6. fileExtname:该选项ulua 用默认值就可,如果项目中lua文件后缀不是.lua可修改为具体的后缀来告诉调试器 例如:"fileExtname": ".txt"
  7. port: 调试端口 和 调试代码中的端口统一即可 无特殊需求
  8. printType: print打印方式
    1. 控制台和系统输出
    2. 控制台输出
    3. 系统输出

调试代码添加

说明:
下载对应的LuaDebug 或 LuaDebugjit 后放入脚本目录中

local breakSocketHandle,debugXpCall = require("LuaDebugjit")("192.168.1.102",7003)   
local breakSocketHandle,debugXpCall = require("LuaDebugjit")("localhost",7003) 
1. IP地址当本机调试时可使用localhost远程调试或移动设备端调试是需要输入调试器所在机器具体的ip 
2. port 端口 LuaIde 默认配置中端口为7003  如有需要可执行更改确保调试器配置端口和调用
代码的端口统一即可  
3. breakSocketHandle luaIde断点及时刷新函数,需要在定时器中调用 该函数确保断点能够及时的
发送到lua 客户端  
4. debugXpCall 程序异常监听函数,用于当程序出现异常时调试器定位错误代码 ulua 中为找到合适的位置添加 可忽略该方法不影响调试,如果有可统一添加的位置可告知一下

开启LuaSocket

ulua 默认关闭了luaSocket 如果项目没有开启请自行开启

LuaManager.cs

打开 Assets/Manager/LuaManager.cs 并添加如下代码

#region luaide 调试库添加
//如果项目中没有luasocket 请打开
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
static int LuaOpen_Socket_Core(IntPtr L)
{
    return LuaDLL.luaopen_socket_core(L);
}

protected void OpenLuaSocket()
{
    LuaConst.openLuaSocket = true;
    lua.BeginPreLoad();
    lua.RegFunction("socket.core", LuaOpen_Socket_Core);
    lua.EndPreLoad();
}
#endregion

并在OpenLibs 方法中调用 OpenLuaSocket()

/// <summary>
/// 初始化加载第三方库
/// </summary>
void OpenLibs() {
    lua.OpenLibs(LuaDLL.luaopen_pb);      
    lua.OpenLibs(LuaDLL.luaopen_sproto_core);
    lua.OpenLibs(LuaDLL.luaopen_protobuf_c);
    lua.OpenLibs(LuaDLL.luaopen_lpeg);
    lua.OpenLibs(LuaDLL.luaopen_bit);


    //luaide socket 开启
    lua.OpenLibs(LuaDLL.luaopen_socket_core); 
    this.OpenLuaSocket();
    //end luaide        


    this.OpenCJson();
}

示例文件:LuaManager.cs

在启动文件中添加调试代码

local breakSocketHandle,debugXpCall = require("LuaDebugjit")("localhost",7003)
local timer = Timer.New(function() 
breakSocketHandle() end, 1, -1, false)
timer:Start();

高阶用法(查看userdata 的值)

由于采用的是c#语言所以可以利用到反射机制这样可以通过反射获取一些c#类型的值显示在调试器中

  1. 下载 LuaDebugTool.cs
    将LuaDebugTool.txt 重命名为 LuaDebugTool.cs 后加入到 Assets/Scripts/Utility/ 目录下
    Paste_Image.png
  1. 打开Editor 项目中的CustomSetting.cs
    Paste_Image.png
  2. 搜索 public static BindType[] customTypeList 所在位置添加如下代码
    _GT(typeof(LuaDebugTool)),
    _GT(typeof(LuaValueInfo)),
    添加代码.png
  1. 重新生成warp 这里我采用的是Clear warp files

    Paste_Image.png
  2. 贴一张c# 变量值的图

  3. c#变量

相关文章

  • Ulua&ToLua 调试

    准备工作 调试代码下载 调试示例下载 =================================== 生成...

  • Flutter 调试方式

    在 Flutter 里有几种调试方式。 断点调试。 debugger 调试。 rendering 调试。 日志调试...

  • vscode使用指南(代码调试)

    代码调试 vscode 原生支持nodejs的调试,其他语言需要安装拓展支持调试 代码调试界面 调试界面 调试配置...

  • HBuilder Android真机调试

    关于调试 难者不会,会者不难。对于调试,这句话尤其合适。无论是前端调试、Java调试、PHP调试、Python调试...

  • iOS 调试

    iOS调试 - NSLog iOS调试 - 断点 iOS调试 - LLDB iOS调试 - EXC_BAD_ACC...

  • 2018-08-15 Windows调试和内核

    Windows调试 软件调试分类。按目标代码的执行模式:内核态调试,用户态调试;按调试器与调试目标的相对位置:本机...

  • WWDC2015 高级调试技巧笔记

    我将为大家介绍以下三个方面的调试技巧 视图调试高级断点调试Address Sanitizer 视图调试 视图调试的...

  • Android Studio调试

    参考 断点调试 实用调试 总结:断点调试有step into step out 等 实用调试:条件断点、日志断点、...

  • 调试手段

    本地调试 远程调试

  • linux编程入门(七)-使用gdb调试程序

    程序开发离不开调试,可以断点调试,也可以打log调试,linux下断点调试c,c++程序用gdb。 断点调试虽然很...

网友评论

      本文标题:Ulua&ToLua 调试

      本文链接:https://www.haomeiwen.com/subject/hwxehxtx.html