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

java - IDEA IDE - 设置字符串断点

文章目录

    • java - IDEA IDE - 设置字符串断点
    • 概述
    • 笔记
    • END

java - IDEA IDE - 设置字符串断点

概述

IDE环境为IDEA2022.3 在这里插入图片描述

在看一段序列化的代码, 想找出报错抛异常那个点, 理解一下代码实现.
因为序列化代码实现在第三方jar包中, 改不了(只读的). 根本数不清第几次才会开始报错. 上下文前后也没有一个数值型的值可以用来下断点.
想下一个字符串断点, 到了要序列化的节点名称, 再单步调试.
要调试的代码如下:

   private void readElements(InputNode node, Object source, Section section) throws Exception {LabelMap map = section.getElements();InputNode child = node.getNext();while(child != null) {         String name = child.getName();Section block = section.getSection(name); // 想在这里下断点, 使name等于预想字符串(e.g. "package")时停下来if(block != null) {readSection(child, source, block);} else { readElement(child, source, section, map);}child = node.getNext();} validate(node, map, source);}

直接设置条件断点为"package" == name, 这种是不好使的. IDEA也不提示这种条件断点无效, 算是个bug.

看了资料, 都是用IDEA下数值型断点, 那样是好使的. 没看到怎么下字符串断点的资料.

自己实验了另外一种方法, 可以对字符串下有效断点.

笔记

在这里插入图片描述
在这里插入图片描述
右击已有的无条件断点, 在弹出框中选择更多.
在这里插入图片描述
展开条件编辑区
在这里插入图片描述
我填入的条件为: 当String name 为 "package"时, 需要命中.
因为IDEA断点的条件判断, 只能判断数值型和指针型.
所以需要判断字符串中字符的字符值, 用记事本 + vscode + hex插件, 就可以知道字符串的hex值, 还可以找一些其他的专业hex工具, 可以很方便的将字符串对应的hex数组拷贝下来.
在这里插入图片描述
具体写断点条件时, 是多个条件的组合.
String name 指针不为空.
name的字符串长度为7.
每个字符是什么值.
其实有了前2个条件的判断, 命中的次数会大大的降低.
再配合检测1~2个位置的字符值, 就能过滤到独一个的name名称.
还好这个字符串值不长, 我都写上了.
写好, 好使的条件断点如下:

((null != name) && (7 == name.length()) && (0x70 == name.value[0]) && (0x61 == name.value[1]) && (0x63 == name.value[2]) && (0x6B == name.value[3]) && (0x61 == name.value[4]) && (0x67 == name.value[5]) && (0x65 == name.value[6]))

END

相关文章:

  • 什么是NPM(Node Package Manager)?它的作用是什么?
  • 姓名脱敏方法
  • Java面试基础
  • Sqlserver2012和Sqlserver2019数据库设置最大并行数解决数据库CPU高问题
  • 在 Mac 中卸载 Node.js
  • 火山引擎ByteHouse:如何用OLAP引擎提升数字营销效果?
  • Mybatis—基础操作
  • 框架安全-CVE 漏洞复现DjangoFlaskNode.jsJQuery框架漏洞复现
  • ts 简易封装 axios,统一 API
  • 中国电子云-隐私计算-云原生安全可信计算,物理-硬件-系统-云产品-云平台,数据安全防护
  • Python Django 之模板语法详解
  • SpringMVC Day 11 : 零 xml 配置
  • Docker Tomcat 搭建文件服务器
  • 历年网规上午真题笔记(2016年)
  • 为什么汽车行业普遍选择使用CATIA?
  • js
  • Node + FFmpeg 实现Canvas动画导出视频
  • Odoo domain写法及运用
  • PHP面试之三:MySQL数据库
  • python 装饰器(一)
  • Spring-boot 启动时碰到的错误
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • vue-router的history模式发布配置
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 猴子数据域名防封接口降低小说被封的风险
  • 开源地图数据可视化库——mapnik
  • 模型微调
  • 如何胜任知名企业的商业数据分析师?
  • 深度学习中的信息论知识详解
  • 一、python与pycharm的安装
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (0)Nginx 功能特性
  • (1)常见O(n^2)排序算法解析
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (JS基础)String 类型
  • (第61天)多租户架构(CDB/PDB)
  • (二)斐波那契Fabonacci函数
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (四)鸿鹄云架构一服务注册中心
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 的程序集加载上下文
  • .NET 反射 Reflect
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例