java - IntelliJ 调试 - 监视包含特定值的任何变量
问题描述
是否可以在没有特定变量或代码行的情况下设置全局监视或断点,以识别值的第一个实例?
我正在调试一个旧的 java6 Web 应用程序,该应用程序在多个数据库和数十个类之间进行一百万次计算,每个类都有数千行代码。我不确定在这个包含数百个类的项目中调用了这几十个类中的哪一个。
假设我正在寻找"the dog runs"
计算流程中出现的位置:是否可以侦听该字符串的第一次出现以查找哪个变量将包含该值?
解决方案
我认为不可能像您所要求的那样监控价值的存在位置。
但是,您可以设置“字段观察点”,它们基本上是类似break when x = "the dog runs"
. 当我在使用这些程序之前,程序会运行得非常非常慢。
有关如何设置它的详细信息,请参阅此处:Intellij breakpoints。
另一种技术是从您认为将值设置为所需值的顶部附近开始。遍历每种方法,直到您看到值设置为您要查找的值。然后在您看到它更改的方法内重复该过程(即这次进入值更改的方法)。
在这个“二级方法”中,您可能会看到另一个设置您正在寻找的值的调用。因此,再次重复该过程,直到找到设置值的系统调用(例如,从数据库读取或正则表达式匹配等)。
这听起来很乏味,但它是一种“分而治之”的方法,它消除了一大块没有将您正在寻找的值设置为一个方法调用的代码。然后你分而治之,征服该方法的内部运作。在实践中,很快就会缩小范围。
推荐阅读
- uwp - Package.appxmanifest 有条件或包含
- java - 如何将捕获的图像从自定义相机传递到另一个活动?
- javascript - 已在 Visual Studio Code 中为 dockerized 节点进程设置但尚未绑定的断点
- r - 尝试使用 R 中的 if_else 代码将人口统计数据添加到现有数据集
- javascript - 通过数据表在视图(索引页)中加载多个表单 - 远程表单将无法正确提交
- java - 如何在不同方法中设置的主要方法中获取私有变量?
- python - 如何使用下面有错误的代码绘制两个正方形?
- reactjs - 使用 react-testing-library 在 react-final-form 上模拟提交
- javascript - 当我关闭并重新打开页面(或刷新)时,如何使用本地存储来保存值并将它们重新呈现在页面上?
- terraform - 在 Terraform 中,如何通过属性在列表中获取不同的元组?