The Debug Library in Lua 选择自 xbcqu 的 Blog

基于车牌识别的停车收费系统的设计与实现(源码+开题) 本系统(程序源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景: 随着城市化进程的加速和汽车保有量的增加,停车难成为了一个普遍存在的问题。传统的停车收费方式存在着效率低下、管理混乱等问题。因此,开发一款基于车牌识别的停车收费系统具有重要的现实意义。研究意义: 基于车牌识别的停车收费系统可以有效地解决传统停车收费方式在效率和准确性方面的问题,提高停车服务的效率和质量。 阅读详情
 
The Debug Library in Lua     选择自 xbcqu 的 Blog
关键字  The Debug Library in Lua
出处 

在lua 中没有给我们提供一个debugger,但是给我们提供了一个debug库,这个库在debugtable中定义了所有的函数,为我们写一个 debugger提供了原始的素材,只要我们充分利用它,就可以写一个自己的debugger,但是 在使用的时候我们应该比较吝啬一些,因为这些函数在lua中,并不保证它的执行效率的,如果在最终发布的版本中不需要这些函数,我们可以将其屏蔽掉,只需 要执行 debug = nil就可以了。

debug库包含了两种类型的函数:自醒函数(introspective functions) and hooks functions,introspective functions可以用来查看当前程序的一些信息的,hooks函数是用来跟踪程序的执行的。

关于debug库有一个重要概念就是桟的级别,桟的级别是一个数字,它指代一个特定的函数,这个函数是当前作用中的,被调用还没有返回的函数,调用debug库的函数的级别是1,调用这个函数的函数的级别是2,等等。
 
在lua的debug库中,主要的introspective函数是debug.getinfo函数,他的第一个参数可能是一个函数或者一个stack level,函数的返回值是一个关于这个函数的数据的一个table,table可能的域如下:

source --- Where the function was defined. If the function was defined in a string (through loadstring), source is that string. If the function was defined in a file, source is the file name prefixed with a `@′.

short_src --- A short version of source (up to 60 characters), useful for error messages.

linedefined --- The line of the source where the function was defined.

what --- What this function is. Options are "Lua" if foo is a regular Lua function, "C" if it is a C function, or "main" if it is the main part of a Lua chunk.

name --- A reasonable name for the function.

namewhat --- What the previous field means. This field may be "global", "local", "method", "field", or "" (the empty string). The empty string means that Lua did not find a name for the function.

nups --- Number of upvalues of that function.

func --- The function itself; see later.

hooks functions
debug库的中的sethook函数,允许我们注册一个在我们程序特定事件时调用的函数,这些特定事件是:
每一次调用函数的时候的事件;
每一次从函数中返回的事件;
lua开始执行一个新行的事件;
指定数量的指令执行后的事件;
lua调用hooks的时候,会传一个字符串,用来描述这个事件的:"call", "return", "line", or "count".,此外对于行事件,还会传一个行号的信息,一个简单的例子:

    function trace (event, line)
      local s = debug.getinfo(2).short_src
      print(s .. ":" .. line)
    end
   
    debug.sethook(trace, "l")   -- l
sethook 在使用的时候,需要传入三个参数,第一个是回掉的函数,第二个是用来镜像到相应事件的一个简单的描述,call->"c", return->"r", line->"l",指定数量的指令执行后的事件只需要在第三个参数中传入一个数字就可以了。

免疫治疗新思路:用COMPASS算法挖掘单细胞数据中的代谢靶点(含差异分析技巧) 本文介绍了如何利用COMPASS算法从单细胞转录组数据中系统推断免疫细胞的代谢活性,为肿瘤免疫治疗提供新的靶点发现思路。文章详细阐述了COMPASS结合流平衡分析的核心原理,并提供了从差异分析到可成药性评估的完整转化路径,旨在帮助研究者精准定位代谢弱点,开发新型免疫代谢疗法。 阅读详情

相关推荐

不止于HTTPS请求:用VS2022编译的libcurl玩转文件上传和代理设置

本文详细介绍了如何使用VS2022编译的libcurl库实现文件上传和高级代理配置。通过实战代码示例,展示了多部分表单上传、二进制数据上传以及各种代理设置技巧,帮助C++开发者提升网络编程能力。

weixin_28595749的博客 206

24.1 Lua debug library

Debug库并没有为你提供一个Lua的调试器,而是为你提供了编写个人调试器的基本功能。出于性能的考虑,调用基本功能的正式接口都是通过C API提供。在Lua中访问debug库的一种方式是通过Lua代码直接访问。 和其他库不同,你要很吝啬的使用debug库。首先,库中的很多功能都会影响性能。其次,它打破了Lua中一些颠扑不破的真理,比如在一个局部变量的作用域之外,你不能访问它。最后,你可以

语言观止 5643

core_analyzer分析c++程序内存占用

环境:centos; 进程:单进程多线程c++程序; 问题:1. 分析系统内存占用; 2. 分析ptmalloc内存空洞(bins上的空闲chunk的大小); 包括:1. 占用了很大内存的c++进程; 2. gcore(在进程不core dump的情况下生成core文件); 3. core_analyzer(分析gcor...

weixin_41644391的博客 4811

MFC运行弹出Microsoft Visual C++ Debug Library

vc++6.0编译MFC程序, 如果不涉及界面更新是正常运行的, 但是我开了多线程后就会有时弹出Microsoft Visual C++ Debug Library的对话框, 有时不会, 并且更新界面是在主线程进行, 工作线程发送消息通知主线程更新界面. 查询了好久并没有找到解决办法, debug是发生在 socket.create() 这一行会出错, 但是没有找到原因.

weixin_53173551的博客 768

Unity 2022.3.3 LTS + Visual Studio 2022:手把手教你复刻《吸血鬼幸存者》核心战斗(附完整项目源码)

本文详细介绍了如何使用Unity 2022.3.3 LTS和Visual Studio 2022从零构建《吸血鬼幸存者》式战斗系统。通过图文开发教程,涵盖对象池优化、ECS架构雏形、2D物理碰撞控制等关键技术,帮助开发者高效复刻这款热门游戏的自动攻击与海量刷怪机制。

weixin_30721077的博客 458

基于CNN网络的轴承故障诊断

内容参考:《基于卷积神经网络的轴承故障 诊断算法研究》–张伟 代码参考: https://github.com/AaronCosmos/wdcnn_bearning_fault_diagnosis 1 背景: 基于信号处理的特征提取+分类器的传统智能诊断算法,对专家经验要求高,设计耗时且不能保证通用性,已经不能满足机械大数据的要求。提出使用基于卷积神经网络智能诊断算法来自动完成特征提取以及故障识别。 1.1 挑战 机电产品故障诊断面临的挑战,有三大特点: (1)数据量大,专业分析人员的数量严重不足,仅依靠人

weixin_45679938的博客 7万+

关于 microsoft visual c++ debug library

std::cout     int a[5];     std::cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4] >> a[5];     int negative = 0;     for (int i = 0;i         if (a[i]             negative += 1;     }     std:

KOBE1288的专栏 7841

400G光模块测试全攻略:从PCS层到CMIS合规的避坑指南

本文为网络设备测试工程师和光通信研发人员提供了一份详尽的400G光模块测试实战指南。文章深入剖析了从PCS层信号完整性、FEC容限到CMIS管理接口合规性测试的全流程,并分享了ANLT协议分析、SerDes眼图调试以及系统级流量压力测试中的核心技巧与常见避坑点,旨在帮助读者构建一套高效、精准的测试体系,确保高速光模块的可靠性与性能。

weixin_29300931的博客 210

【Lua 进阶系列】从调用栈查询到 Hook(钩子):一文理解 Lua 虚拟机的事件回调机制

本文深入解析 Lua 的 Hook 机制,揭示其如何在不修改业务代码的前提下,实现函数调用追踪、行级监控与执行控制。通过对比 debug.getinfo() 和 traceback() 的主动查询局限,引出 Hook 的自动触发优势——基于虚拟机执行事件(call/return/line/count),结合 debug.sethook() 实现解耦式调试。文章以 Reactor 模型类比,阐明 Hook 的事件驱动本质,并梳理注册对象(线程)、监听内容与回调分发逻辑,为工程化调试提供高效方案。

努力努力再努力wz的博客 739

HarmonyOS应用开发者基础认证

B. 自定义组件:可复用的 UI 单元,可组合其它组件。D. 内置组件:ArkTS中默认内置的基本组件和布局组件,开发者可以直接调用,如Column、Text、Divider、Button等。E. 属性方法:用于组件属性的配置,统一通过属性方法进行设置,如fontSize()、width()、height()、color() 等。在Column和Row容器组件中,justifyContent用于设置子组件在主轴方向上的对齐格式,alignItems用于设置子组件在交叉轴方向上的对齐格式。

牛肉胡辣汤 3818

对角两对双差速轮AGV的平移、直行、转弯和原地旋转之PID控制

本示例将展示如何使用PID控制算法,控制具有对角线布置的两对双差速轮(左前和右后)的AGV,实现平移、直行、转弯和原地旋转等运动。通过对车辆的运动学和PID控制器的设计,我们可以精确地控制AGV的运动

xiaoc100200的博客 1510

【Lua进阶系列】Lua 面向对象编程:从 Table 到类:构造函数、继承、多态、多继承与封装

Lua虽无原生class语法,但通过Table、函数、元表(__index)与闭包等机制,可实现封装、继承与多态。核心思想是:用Table表示对象,将状态与方法分离;利用__index实现公共方法共享;通过元表链支持继承与重写;结合闭包隐藏私有状态。最终,以灵活组合原生特性,构建出完整的面向对象模型。

努力努力再努力wz的博客 599

Qt之自定义QToolTip,去掉显示动画和隐藏延时

先来看看Qt原生QToolTip的缺点:1.当提示内容无变化时,弹窗无法移动。只能先传个空字符串强制弹窗隐藏,然后在新位置再传个字符串。2.默认显示10多秒才消失,当然这个时间是可以设置的,但是如果我想一直显示呢?总不能设置一个超级大的时间吧。3.鼠标移出控件后(调用QToolTip::showText时传入了控件指针)默认300毫秒弹窗才隐藏。而且这个时间没法设置,如果想立即隐藏就没办法了。

草上爬的博客 4268

【政安晨】嵌入式AI开发实践 —— ESP-Claw 深度拆解:把 AI Agent 塞进 $5 芯片,它是怎么“看见“并“握住“硬件的

最近一个月,我几乎把 Espressif 新推的 ESP-Mosaico 开发板(2026-10-20 发布,基于全新 RISC-V 双核 ESP32-S31)和它背后的 ESP-Claw 智能体框架翻了三遍——官网、GitHub 全部 6 个仓库、ESP-Claw 官方文档,外加 arXiv 上端侧 Agent 的几篇论文。ESP-Claw 不是"在 ESP32 上跑大模型",而是把大模型当成一个会下棋但棋力不稳的对手——能算的地方绝不让它算,不能算的地方只许它走一个格。

政安晨——致力于AI人工智能数字互动领域 325

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python21-MCP代码修正

Python21-MCP代码修正

感谢所有乐于奉献的人,在此不一一具名 199

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Postman 自动给 Claude Code、Codex、Cursor 装插件怎么查和卸载:本机实测 5 处痕迹(Postman 12.34)

Postman 桌面版升级时会自动给 Claude Code、Codex、Cursor 装插件。本文在 macOS 上实测 Postman 12.34 留下的 5 处痕迹:日志记录、Claude Code 插件和 SessionStart 指令、Codex 配置、Cursor 插件目录、Postman CLI,给出只读自查脚本和逐个卸载命令。

u011831527的博客 524

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: MFC控制条窗口布局原理
下一篇: MFC教程(13)-- MFC工具条和状态栏(1)
skyremember
博客等级 码龄20年 204粉丝 484原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值