如何在IntelliJ中调试时修改变量值,以便各自的手表自动更新?

mar*_*ark 9 debugging intellij-idea

我有以下代码:

Matcher matchDays = m_daysRegex.matcher(e.getKey());
if (matchDays.matches()){
...
}
Run Code Online (Sandbox Code Playgroud)

e.getKey()"周一至周五" 在哪里.

现在,我已经执行了第一行并站在if表达式上.使用监视窗口我评估matchDays.matches()表达式,然后在各种方法上添加一些监视matchDays.然后使用相同的监视窗口,我评估matchDays = m_daysRegex.matcher("Mon,Fri")matchDays.matches()表达式,看看会发生什么.不幸的是,监视窗口不会自行刷新,并且没有明确的按钮来执行此操作: 在此输入图像描述

在上图中,注意如何matchDays.group(0)显示"Mon,Fri",但matchDays.group(1)显示"Mon-Fri".这是因为我手动刷新了前者,但所有其余的仍显示旧值.我必须手动刷新它们,这很烦人.

难道我做错了什么?有没有正确的方法,所以手表表达式会自动刷新?或者有没有办法刷新整个观察窗口?

谢谢.

Har*_*Rao 14

要在IntelliJ中更改运行时变量的值,请执行以下操作:

  1. "变量"窗口中找到变量.
  2. 右键单击并选择" 设置值... ".
  3. 更新值,然后按Enter键.

  • @另一个你可能没有一个“int”,而是一个java.lang.Long,尝试: `code` new long(42) `code` (4认同)

Coo*_*ind 5

Android Studio 中也是如此。在调试模式下Variables,选择一个变量并按Set Value...。如果您没有看到该变量,请展开this列表。

在此输入图像描述

然后输入新值并按 Enter 键。

如果您还添加Variables诸如调试器之类的内容,则每次到达断点时someVariable = 1都会更改值。someVariable


Cra*_*der 3

不可能自动刷新它们,因为刷新需要调用实际的方法,这可能会对调试器和应用程序的语义产生副作用。简单的监视值会自动刷新。

另请参阅YouTrack 中的类似请求