当前位置: 首页 > article >正文

《leetcode-runner》如何手搓一个debug调试器——指令系统

前文:
《leetcode-runner》如何手搓一个debug调试器——引言
《leetcode-runner》如何手搓一个debug调试器——架构

文章目录

  • 什么是指令系统
  • 指令的组成部分
  • leetcode-runner支持哪些指令
  • 如何解析用户输入的命令行
  • 指令识别流程

仓库地址:leetcode-runner

什么是指令系统

指令系统,是leetcode-runner项目debug模块内部通用的一套指令,它标识用户要求做出的debug工作

指令的组成部分

一条指令拥有两个组成部分:操作 + 参数

比如添加断点指令,“b 18”。b是breakpoint操作,意思是添加断点。其后的整数18就是b指令的参数,合起来就是在第18行添加断点

有的指令存在参数,有的指令不存在参数,比如R指令,他表示运行程序,直到程序结束或者遇到断点。R指令就不存在参数

leetcode-runner支持哪些指令

指令名词指令输入形式指令作用
N指令n | n 数字 | n 数字step into单步执行
R指令r运行代码, 直到下一个断点
P指令p打印本地变量
B指令b 数字在指定行打上断点
SHOWB指令show b | s b | sb显示所有断点
RB指令remove b 数字| r b 数字| rb 数字| remove b数字| r b数字| rb数字移除指定行断点
RBA指令remove all| ra| r a移除所有断点
W指令w查看当前所在位置
STEP指令step out | step over功能和idea的debug对应按钮功能一致
WATCH指令watch expression计算expression, 同时将expression加入监视池

如何解析用户输入的命令行

先看UML图
在这里插入图片描述
指令Instruction,由操作 + 参数组成。不同的操作会对应着不同的参数,也就代表着不同的指令。因此,leetcode-runner提供Operation枚举类,枚举不同的操作

Operation,操作的枚举类,拥有两个重要参数

  • ParameterExtractor 参数提取器
  • regex:正则表达式,用于匹配用户输入的命令

指令识别流程

请添加图片描述

InstParserImpl作为识别指令的核心类,它的处理识别流程大致如上

首先遍历Operation枚举的所有操作,使用操作匹配用户输入。如果匹配成功,则使用操作对应的指令提取器提取参数,如果提取成功,创建并返回指令。否则终止匹配

在这里插入图片描述


http://www.kler.cn/a/505066.html

相关文章:

  • 第十二章:算法与程序设计
  • Linux网络_套接字_UDP网络_TCP网络
  • idea分支合并代码
  • nginx 配置ssl_dhparam好处及缺点
  • 我国无人机新增实名登记110.3 万架,累计完成飞行2666万小时
  • WPF 如何添加系统托盘
  • 【源码】Sharding-JDBC源码分析之SQL重写实现原理
  • IEC103 转 ModbusTCP 网关
  • 【网络协议】ACL(访问控制列表)第二部分
  • Re78 读论文:GPT-4 Technical Report
  • 中台成熟度模型有什么用
  • 2025特种设备安全管理人员免费题库限时练习(判断题)
  • RocketMQ消息发送---源码解析
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(4)
  • 系统架构设计师考点—UML建模和设计模式
  • ASP.NET Core 全局异常处理
  • 【NLP高频面题 - 分布式训练篇】分布式训练主要解决大模型训练中的哪些问题?
  • Android中下载 HAXM 报错 HAXM installation failed,如何解决?
  • Jmeter进行http接口并发测试
  • MyBatis 中动态 SQL 标签
  • 后端技术选型 sa-token校验学习 中 文档学习
  • 庖丁解java(一篇文章学java)
  • 浅谈PHP之线程锁
  • 【实践】操作系统智能助手OS Copilot新功能测评
  • C语言初阶习题【30】字符串左旋
  • ECharts 折线图隐藏标点