Lua学习笔记:在Visual Studio中调试Lua源码和打断点

news/2024/7/16 7:13:54 标签: visual studio, lua, ide
前言
本篇在讲什么

调试Lua源码
本篇需要什么

Lua语法有简单认知
依赖Visual Studio工具

本篇的特色

具有全流程的图文教学
重实践,轻理论,快速上手
提供全流程的源码内容


★提高阅读体验★

👉 ♠ 一级标题 👈

👉 ♥ 二级标题 👈

👉 ♣ 三级标题 👈

👉 ♦ 四级标题 👈


目录

  • ♠ 前言
  • ♠ 新建C++控制台应用
  • ♠ 下载Lua源码
  • ♠ 引入Lua源码
  • ♠ 添加预处理器定义标记
  • ♠ 补充lua脚本
  • ♠ 运行和设置断点
  • ♠ 推送
  • ♠ 结语


♠ 前言

对Lua底层一些实现有些疑问,直接看源码思路并不是很清晰,所以想把源码跑起来看一看堆栈,打一下断点


♠ 新建C++控制台应用

我们需要在VS内新建一个C++的控制台应用

在这里插入图片描述


♠ 下载Lua源码

lua官网:传送门

移步到Lua的官网,根据下图的指示,选择需要的Lua版本去下载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解压完成后是下图这个样子的

在这里插入图片描述


♠ 引入Lua源码

首先将解压的Lua源码下的src目录全部拷贝到刚才新建的控制台应用目录下,src下是所有Lua相关的头文件和c文件

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在解决方案下引入头文件源文件

在这里插入图片描述

在这里插入图片描述


♠ 添加预处理器定义标记

右键解决方案内的项目,属性页内的C/C++下的预处理器,添加_CRT_SECURE_NO_DEPRECATE标记,不然生成的时候会报错

在这里插入图片描述


luafont_147">♠ 补充lua脚本

在控制台应用的目录下新建测试脚本test.lua,并添加部分lua代码,如下图所示

在这里插入图片描述
在这里插入图片描述


♠ 运行和设置断点

首先我们并不需要源码中的main入口,所以吧luac.clua.c中的main都注释了就可以了

在这里插入图片描述
在这里插入图片描述

在我们自己的脚本内引入lua的头文件,并新建lua的虚拟机去加载lua脚本

在这里插入图片描述

执行后的效果如下图所示

在这里插入图片描述

同时我们在对应的逻辑里添加断点已经可以断到了

在这里插入图片描述


♠ 推送

  • Github
https://github.com/KingSun5

♠ 结语

若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。

👉 本文属于原创文章,转载请评论留言,并在转载文章头部著名作者出处👈

http://www.niftyadmin.cn/n/5028357.html

相关文章

春秋云镜 CVE-2013-2134

春秋云镜 CVE-2013-2134 S2-015 靶标介绍 2.3.14.3 之前的 Apache Struts 2 允许远程攻击者通过标记在通配符匹配期间未正确处理的所提出的操作名称的请求执行任何 OGNL 代码,这是与 CVE-2013-2135 不同的漏洞。 启动场景 漏洞利用 工具利用 得到flag flag{b92…

软件测试(功能、工具、接口、性能、自动化、测开)详解

一、软件测试功能测试 测试用例编写是软件测试的基本技能;也有很多人认为测试用例是软件测试的核心;软件测试中最重要的是设计和生成有效的测试用例;测试用例是测试工作的指导,是软件测试的必须遵守的准则。 黑盒测试常见测试用…

Say0l的安全开发-代理扫描工具-Sayo-proxyscan【红队工具】

写在前面 终于终于,安全开发也练习一年半了,有时间完善一下项目,写写中间踩过的坑。 安全开发的系列全部都会上传至github,欢迎使用和star。 工具链接地址 https://github.com/SAY0l/Sayo-proxyscan 工具简介 SOCKS4/SOCKS4…

第26节——React.memo+ React.PureComponent

一、React.memo的概念 **React.memo 为高阶组件。**如果你的组件在相同 props 的情况下渲染相同的结果,那么你可以通过将其包装在 React.memo 中调用,以此通过记忆组件渲染结果的方式来提高组件的性能表现。这意味着在这种情况下,React 将跳…

1、MongoDb综述

1. MongoDb综述 1.1. 什么是Nosql NoSQL:Not Only SQL ,本质也是一种数据库的技术,相对于传统数据库技术,它不会遵循一些约束,比如:sql标准、ACID属性,表结构等。 Nosql优点 l 满足对数据库的高并发读写…

70.C++虚析构函数

今天进行了新的学习。 目录 1.什么是虚析构函数 2.为什么需要虚析构函数 3.虚析构函数的声明 4.派生类中的析构函数 5.使用虚析构函数 1.什么是虚析构函数 虚析构函数是在C中用于处理继承层次结构中的资源释放的一种技术。它在析构函数前加上 virtual 关键字,…

《数据结构、算法与应用C++语言描述》使用C++语言实现二维数组矩阵

《数据结构、算法与应用C语言描述》使用C语言实现二维数组矩阵 行主映射与列主映射 如图7-2所示。 行主映射:从第一行开始,依次对每一行的索引从左至右连续编号。 列主映射:对索引的编号从最左列开始,依次对每一列的索引从上到…

gin框架再探

Gin框架介绍及使用 | 李文周的博客 (liwenzhou.com) lesson03_gin框架初识_哔哩哔哩_bilibili 1.路由引擎 //路由引擎 rgin.Default() 2.一些http请求方法 get post put delete等等 遇到什么路径,执行什么函数 r.GET("/hello",func{做你想做的事返回…