Lua中如何實現類似gdb的斷點調試—06斷點行號檢查與自動修正

  • 2022 年 3 月 13 日
  • 筆記

前面两篇我们对性能做了一个优化,接下来继续来丰富调试器的特性。 我们前面提到过,函数内并不是所有行都是有效行,空行和注释行就不是有效行。我们之前在添加断点的时候,并没有对行号进行检查,任何行号都能成功添加断点。所以如果添加的断点行号是无效的,那么永远也不会断到那里。但是钩子里并不知道它是无效的,ca …

Continue Reading

Lua中如何實現類似gdb的斷點調試--05優化斷點資訊數據結構

  • 2022 年 3 月 12 日
  • 筆記

在上一篇 04优化钩子事件处理 中,我们在钩子函数中引入了call和return事件的处理,对性能进行了优化。 细心的同学可能已经发现了,我们的hook函数中call事件和line都需要对整个断点表进行遍历,这其中其实是存在着一些冗余的。因为call事件只关心函数是否有断点,而line事件则只关心本 …

Continue Reading

Lua中如何實現類似gdb的斷點調試--04優化鉤子事件處理

  • 2022 年 3 月 11 日
  • 筆記

在第一篇的 01最小实现 中,我们实现了一个断点调试的最小实现,在设置钩子函数时只加了line事件,显然这会对性能有很大的影响。而后来两篇 02通用变量打印 和 03通用变量修改及调用栈回溯 则是提供了一些辅助的调试接口,并没有对钩子函数进行修改。 我们本篇将在钩子中引入call和return事件的 …

Continue Reading

Lua中如何實現類似gdb的斷點調試--02通用變數列印

在前一篇 01最小实现 中,我们实现了Lua断点调试的的一个最小实现。我们编写了一个模块,提供了两个基本的接口:设置断点和删除断点。 虽然我们已经支持在断点进行变量的打印,但是需要自己指定层数以及变量索引,使用起来不是很方便。要进行upvalue打印的话,操作会更加麻烦。为了提升调试的方便性,我们决 …

Continue Reading

Lua中如何實現類似gdb的斷點調試--01最小實現

说到Lua代码调试,最常用的方法应该就是加一堆print进行打印。print大法虽好,但其缺点也是显而易见的。比如效率低下,需要修改原有函数内部代码,在每个需要的地方添加print语句,运行一次只能获取一次信息,下次换个地方又得重新添加print语句。而且有时候,事先并不知道该去哪打印、或者打印什么 …

Continue Reading

EmmyLua 註解功能

  • 2021 年 12 月 15 日
  • 筆記

前言 网上配置 EmmyLua 的方法很多,此处就不做赘述(因此前提是你已经安装配置完EmmyLua) 本文仅是对 EmmyLua插件 内 注解功能 用法的代码演示。因为网上大部分EmmyLua配置教程中都没对此部分进行讲解,而实际lua开发时EmmyLua的注解功能几乎必不可缺,故作此文 注解的目 …

Continue Reading

lua入門之環境搭建、第一個demo

  • 2021 年 11 月 11 日
  • 筆記

前言 前段时间因为有些项目功能需要,自己研究了下lua,今天整理下,并以一个demo为示例演示 手机上的运行效果 分为几个步骤来逐步讲解。 1.lua介绍,为什么选择它? 2.环境安装 3.撸一个简单demo 一.lua介绍,为什么选择它? Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代 …

Continue Reading

redis中lua腳本的簡單使用

  • 2021 年 10 月 27 日
  • 筆記

一、背景 在使用 redis 的过程中,发现有些时候需要 原子性 去操作redis命令,而redis的 lua 脚本正好可以实现这一功能。 比如: 扣减库存操作、限流操作等等。 redis的 pipelining 虽然也可以一次执行一组命令,但是如果在这一组命令的执行过程中,需要根据上一步执行的结果 …

Continue Reading

xLua中Lua調用C#

  • 2021 年 10 月 12 日
  • 筆記

xLua中Lua调用C# 1.前提 这里使用的是XLua框架,需要提前配置xlua,设置加载器路径; 可以参考之前的Blog: 《xlua入门基础》 ; //调用端,所有的lua代码都写在LuaCallCSharp.lua文件中 public class LuaCallCSharp1 : MonoB …

Continue Reading

xLua中C#調用Lua

  • 2021 年 10 月 11 日
  • 筆記

C#调用Lua 一.前提 这里使用的是XLua框架,需要提前配置xlua,设置加载器路径; 可以参考之前的Blog: 《xlua入门基础》 ; 二.C#调用Lua全局变量 lua中所有的全局变量都会存在一个表中,对应xLua中的Global,通过lua解释器返回出来; 通过Global的方法Get< &hellip;

Continue Reading