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

前言
本篇在讲什么

调试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标记,不然生成的时候会报错

在这里插入图片描述


♠ 补充lua脚本

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

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


♠ 运行和设置断点

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

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

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

在这里插入图片描述

执行后的效果如下图所示

在这里插入图片描述

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

在这里插入图片描述


♠ 推送

  • Github
https://github.com/KingSun5

♠ 结语

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/135515.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP状态码301(永久重定向)不同Web服务器的配置方法

文章目录 301状态码通常在那些情况下使用301永久重定向配置Nginx配置301永久重定向Windows配置IIS301永久重定向PHP下的301重定向Apache服务器实现301重定向 301重定向是否违反相关法规?推荐阅读 当用户或搜索引擎向服务器发出浏览请求时,服务器返回的HT…

Linux 企业级夜莺监控分析工具远程访问

目录 前言 1. Linux 部署Nightingale 2. 本地访问测试 3. Linux 安装cpolar 4. 配置Nightingale公网访问地址 5. 公网远程访问Nightingale管理界面 6. 固定Nightingale公网地址 前言 夜莺监控是一款开源云原生观测分析工具,采用 All-in-One 的设计理念&…

elasticsearch17-自动补全

个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。 本篇励志:三人行,必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud…

【面试题】智力题

文章目录 腾讯1000瓶毒药里面只有1瓶是有毒的,问需要多少只老鼠才能在24小时后试出那瓶有毒。有两根不规则的绳子,两根绳子从头烧到尾均需要一个小时,现在有一个45分钟的比赛,裁判员忘记带计时器,你能否通过烧绳子的方…

[k8s] pod的创建过程

pod的创建过程 定义 Pod 的规范: apiVersion: v1 kind: Pod metadata:name: my-pod spec:containers:- name: my-containerimage: nginx:latest创建 Pod 对象: 使用 kubectl 命令行工具或其他客户端工具创建 Pod 对象: kubectl create -f…

线程锁(Thread Lock)和进程锁(Process Lock)

在Python中,线程锁(Thread Lock)和进程锁(Process Lock)具有相似的功能,但它们分别用于同步多线程和多进程环境中的资源访问。 进程锁 进程锁(Process Lock)可以用于在多进程环境中…

千巡翼X1 让航测无人机更小更轻更高效

利用无人机进行航空摄影测量,已成为测绘外业生产的主要方式,不仅方便快捷,更能全面准确获得成果。近年来,凭借快速高效、机动灵活、安全可靠、低成本等诸多优势,小型多旋翼无人机逐渐成为一些航测项目作业的新利器。 千…

新手如何开始Microstation CE版二次开发

一步步学习MicroStation CE MDL(C)开发 - 技术资料库 - Bentley 中国优先社区 - Bentley Communities https://communities.bentley.com/communities/other_communities/chinafirst/w/chinawiki/57704/microstation-ce-mdl-c一步步学习MicroStation CE A…

opencv 基础(持续更新中)

1 前言 https://www.couragesteak.com/ 2 安装 3 基础属性demo 打开一张图片: import cv2img cv2.imread(./girl.jpg)print(img.shape) # (1536, 1024, 3) 数组形状 print(type(img)) # numpy 数组 print(img) # 三维数组(彩色图片&am…

产品经理学习笔记

产品文档之BRD、MRD和PRD - 知乎BRD、MRD和PRD一起被认为是从市场到产品需要形成的标准规范文档: 1、BRD(Business Requirement Document),商业需求文档,是一份产品商业论证报告,基于商业目标或价值所描述的…

Python爬虫被封ip的解决方案

目录 一、网站反爬虫机制有哪些 二、Python爬虫被封ip的原因 三、爬虫被封IP怎么解决 四、代码示例 在爬虫程序运行过程中,被封禁IP地址是常见的问题之一。这通常是由于目标网站采取了反爬虫机制,例如限制单个IP地址的请求频率或识别请求特征等。当爬…

Python函数进阶:探索高级函数特性与技巧

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 Python中的函数不仅仅是…

【23种设计模式】组合模式【⭐】

个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…

AjaxJavaScriptcss模仿百度一下模糊查询功能

1、效果 如下图所示,我们在输入大学时,程序会到后端查询名字中包含大学的数据,并展示到前端页面。 用户选择一个大学,该大学值会被赋值到input表单,同时关闭下拉表单; 当页面展示的数据都不符合条件时&…

【八大经典排序算法】堆排序

【八大经典排序算法】堆排序 一、概述二、思路解读三、代码实现(大堆为例) 一、概述 堆排序是J.W.J. Williams于1964年提出的。他提出了一种利用堆的数据结构进行排序的算法,并将其称为堆排序。堆排序是基于选择排序的一种改进,通…

面试题:问js的forEach和map的区别

前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 【国庆头像】- 国庆爱国 程序员头像!总有一款适合你! 前言 为什么要写这么一篇文章,原因是今天下午水群的时候&…

泰尔指数案例分析

泰尔指数是一种衡量‘不平均’的指数,比如用于衡量‘贫富差异’,也或者衡量大气污染的水平是否一致,二氧化碳排放水平差异情况等。泰尔指数的数学原理是‘熵’,‘熵’是一种衡量数据‘有序性’的指标,当‘熵’值越大时…

184_Python 在 Excel 和 Power BI 绘制堆积瀑布图

184_Python 在 Excel 和 Power BI 绘制堆积瀑布图 一、背景 在 2023 年 8 月 22 日 微软 Excel 官方宣布:在 Excel 原生内置的支持了 Python。博客原文 笔者第一时间就更新到了 Excel 的预览版,通过了漫长等待分发,现在可以体验了&#xf…

Linux UDP编程流程

文章目录 UDP编程流程UDP协议无连接的特点UDP协议数据报的特点 UDP编程流程 UDP 提供的是无连接、不可靠的、数据报服务。服务器端和客户端没有什么本质上的区别。编程流程如下: socket()用来创建套接字,使用 udp 协议时,选择数据报服务 SOC…

扔掉你的开发板,跟我玩Mcore-全志h616

本文转载自WhyCan Forum(哇酷开发者社区): https://whycan.com/t_10024.html 作者leefei 这是一个1.69寸触摸小电视。使用全志H616芯片,板上硬件有mpu6050陀螺仪,USB转ttl调试串口,一个USB接口,WIFI&蓝牙&#x…