IntelliJ调试-监视任何包含特定值的变量

时间:2019-05-25 02:06:23

标签: java debugging intellij-idea

是否可以在没有特定变量或代码行的情况下推出全局监视或断点,以识别值的第一个实例?

我正在调试一个旧的Java6 Web应用程序,该应用程序在多个数据库和数十个类(每个包含数千行代码)之间进行一百万次计算。我不确定在这个包含数百个类的项目中将调用这几十个类中的哪一个。

比方说,我正在寻找"the dog runs"在计算流程中出现的位置:是否有可能侦听该字符串的首次出现,目的是查找将包含值的变量? >

1 个答案:

答案 0 :(得分:2)

我认为无法像我想的那样监视值的存在位置。

但是,您可以设置“字段监视点”,它们基本上是类似<item name="android:textViewStyle">null</item>的表达式。当我使用这些工具之前,程序将运行非常缓慢。

有关设置方法的详细信息,请参见此处:Intellij breakpoints

另一种方法是从您认为已将值设置为所需值的顶部开始。 跳过每种方法,直到看到将值设置为所要查找的位置。然后在您看到更改的方法内重复该过程(即这次进入更改值的方法)。

在此“第二级方法”中,您可能会看到另一个调用,该调用会设置您要查找的值。因此,请再次重复此过程,直到找到设置该值的系统调用(例如,从数据库中读取数据或正则表达式匹配等)。

这听起来很乏味,但是它是一种“分而治之”的形式,它消除了大量代码,这些代码没有将您要查找的值设置为一个方法调用。然后,您可以划分并征服该方法的内部原理。实际上,很快就可以缩小范围。