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

2023-09-15 14:23:43
前言
本篇在讲什么

调试Lua源码
本篇需要什么

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

本篇的特色

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


★提高阅读体验★

👉 ♠ 一级标题 👈

👉 ♥ 二级标题 👈

👉 ♣ 三级标题 👈

👉 ♦ 四级标题 👈


♠ 前言

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


♠ 新建C++控制台应用

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

在这里插入图片描述


♠ 下载Lua源码

lua官网:传送门

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

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

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

在这里插入图片描述


♠ 引入Lua源码

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

在这里插入图片描述

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

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

在这里插入图片描述

在这里插入图片描述


♠ 添加预处理器定义标记

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

在这里插入图片描述


♠ 补充lua脚本

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

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


♠ 运行和设置断点

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

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

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

在这里插入图片描述

执行后的效果如下图所示

在这里插入图片描述

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

在这里插入图片描述


♠ 推送

  • Github
https://github.com/KingSun5

♠ 结语

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

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

长沙专业消费者调查公司:为你的市场决策提供强大支持

在当今竞争激烈的市场环境中,准确把握消费者需求是取得成功的关键。群狼调研(长沙口味测试)作为长沙专业消费者调查公司,以其专业的市场研究能力和丰富的行业经验,为众多企业提供高质量的消费者调查服务,帮助它们精准定位目标消费者,优化营销策略。群狼调研(长沙品牌传播效果测评)自成立以来,一直致力于打造一个集市场调查、数据分析、

嵌入式-C语言关系运算符

目录一.简介一.简介C语言关系运算符是用来比较两个值之间的关系并返回一个布尔值(真或假)的运算符。以下是C语言中常用的关系运算符:1.等于(==):检查两个值是否相等,如果相等则返回真(1),否则返回假(0)。例如10==5为false(0),2==2为true(1)2.不等于(!=):检查两个值是否不相等,如果不相等

UDP 的报文结构

1.UDP特点2.UDP协议报文结构1.UDP特点UDP特点分为:无连接:知道对端的IP和端口号就可以进行传输,即通信时不需要创建连接(发送数据结束时也没有连接可以释放)所以减小了开销和发送数据前的时延;比如:微信,微信发送信息时,不需要建立连接,可以直接发送信息;有连接就类似于打电话,必须对方接听了你的电话,才能进行

GB28181学习(四)——网络设备信息查询

要求源设备向目标设备发送信息查询命令,目标设备将结果通过查询应答命令返回给源设备;设备信息查询命令包括:设备目录设备信息设备状态信息设备配置预置位、看守位巡航轨迹列表巡航轨迹PTZ精准状态存储卡状态等信息查询的范围:本地SIP监控域、跨SIP监控域;网络设备信息查询命令均采用MESSAGE方法;目录查询应答命令支持多响

第三十一章 Classes - 继承规则

第三十一章Classes-继承规则继承规则与其他基于类的语言一样,可以通过继承组合多个类定义。类定义可以扩展(或继承)多个其他类。这些类又可以扩展其他类。请注意,类不能继承Python中定义的类(即.py文件中包含的类定义),反之亦然。以下小节提供了中类继承的基本规则。继承顺序使用以下继承顺序规则:默认情况下,如果在多

JDK21你可以不用,新特性还是要了解的

大家好,我是风筝今年6月份的时候,写过一篇JDK21引入协程,再也不用为并发而头疼了,那时候只是预览版,终于,前两天(2023年9月19日)发布了JDK21正式版。老早就在YouTube上订阅了JDK21发布会的直播,一场预计历时8个小时的直播。SpringBoot3.x版本最低支持的JDK版本为JDK17,也就是说如

SpringBoot实战(二十四)集成 LoadBalancer

目录一、简介1.定义2.取代Ribbon3.主要特点与功能4.LoadBalancer和OpenFeign的关系二、使用场景一:Eureka+LoadBalancer服务A:loadbalancer-consumer消费者1.Maven依赖2.application.yml配置3.RestTemplateConfig.

设计模式:责任链模式

目录组件代码示例源码中使用优缺点总结责任链模式(ChainofResponsibilityPattern)是一种行为型设计模式,它允许多个对象按照顺序处理请求,直到其中一个对象能够处理该请求为止。责任链模式将请求发送者和接收者解耦,使得多个对象都有机会处理请求,同时避免了请求发送者与接收者之间的直接耦合关系。在责任链模

influxdb2.7基本介绍安装与启动

概念timestamp:influxdb所有的数据都会有一个列_time来存timestamp。默认是以nanosecond格式存储的。field:field就是mysql中的字段,fieldkey存储在_field字段中,fieldvalue就是字段值,存储在_value字段中。fieldkey和fieldvalue

如何在微软Edge浏览器上一键观看高清视频?

编者按:视频是当下最流行的媒体形式之一。但由于视频压缩、网络不稳定等原因,我们常常可以看到互联网上的很多视频其画面质量并不理想,尤其是在浏览器端,这极大地影响了观看体验。不过,近期微软Edge浏览器推出了一项新功能,一键就可以让浏览器中的视频变为高清版。这项神奇功能背后的技术秘诀是什么?今天,让我们一起来了解一下微软E

selenium学习

selenium模块和爬虫之间的关联便捷的获取网站中动态加载的数据便捷实现模拟登录什么是selenium模块基于浏览器自动化的一个模块selenium使用流程:-环境安装:pipinstallselenium-下载一个浏览器的驱动程序(谷歌浏览器)-下载路径:http://chromedriver.storage.go

热文推荐