是否可以在运行时观察变量?

Is it possible to watch variables at runtime?

我知道调试的基础知识,我知道我可以向变量添加监视,以在给定条件下停止程序的执行。但我不想每次需要查看变量值时都停止程序。我也不想将每个相关变量的值记录到 logcat...我只想像在断点处那样查看它们的值,只是在运行时。

我在 Android Studio 编程 Android。

感谢您的帮助!

当您的程序在断点处停止时,单击调试器菜单最右侧的图标(见下图)。您可以在此 window 中输入方法或变量名称,然后查看它们是什么。

您可以键入任何您喜欢的表达式(只要它在您破坏代码的范围内)并输入任何硬编码值或对象,而无需重新运行您的项目。

将变量添加到您的监视列表

首先在 class 您想要观察特定变量的位置放置一个断点。 运行 代码,一旦它从变量 window 帧到达断点,您应该会看到所有可访问的变量。只需选择您想要观看的节目,然后右键单击并从下拉列表中选择 "Add to watches"。

继续调试,您应该会看到 Watches window 框架中的变量会根据您的代码在适当的时候更新。

如果您了解调试的基础知识,则可以轻松地向变量添加监视,以便在给定条件下停止程序的执行。如果您不想每次想查看变量值时都停止程序,那么查看变量值的简单方法是使用 Toasts。 toast 在一个小弹出窗口中提供操作中任何变量的示例值。 Toasts 在设置的超时后自动消失。

一个简单的代码示例:

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();

为了在 Toast 中查看变量值:

   int var=1;
   Toast.makeText(getApplicationContext(), "vlaue is "+var, Toast.LENGTH_LONG).show();

为了在 Toast 中查看变量类型:

   Toast.makeText(getApplicationContext(), "type is "+var.getClass().getName(), Toast.LENGTH_LONG).show();

是的,你可以!

根据 Android Dev Summit '19,您可以通过 禁用断点中的 Suspended 标志 轻松做到这一点。

然后您可以在每次到达断点时向控制台评估一条日志消息,而无需暂停!

如您所见,我的应用程序每次到达断点时都会向控制台发送日志。

也就是说,您可以在运行次查看变量变化!