使用Eclipse断点在Android源代码上打印日志?

时间:2013-05-21 08:01:22

标签: java android eclipse debugging conditional-breakpoint

在调试工作中要了解系统正在做什么我想使用java调试器条件断点机制在Android的源代码中的特定行上打印日志消息。

我该怎么办?我完全不知道这个问题是什么。

我知道的事情:
Eclipse java调试器具有"条件断点" ,即您在代码中设置断点并编写条件。每次代码到达断点行时,只有在您编写的条件为true时才会停止执行,否则它将不会停止。

虽然我可能会扭曲此机制以在代码中的特定行打印日志消息,而不是停止执行。如果可以,我可以跟踪Android的源代码正在做什么。

1 个答案:

答案 0 :(得分:1)

您可以在条件断点中使用以下表达式:

android.util.Log.v("MyApp", "my message") == -1

这将使您的断点不会中断执行,并且在LogCat视图中,使用tag:MyApp表达式过滤视图,您将获得所需的已记录消息。您还可以使用其他日志级别(aiew)。有关详细信息,请参阅日志documentation

要使断点始终断开,请使用:

android.util.Log.v("MyApp", "my message") >= 0

Log.v的返回值是日志消息内部具有的字节数,因此它始终为正数。

<强>附录: 有一种更优雅的方式来做到这一点。 Eclipse条件断点可以是任何Java代码,包括在断点处使用局部变量。如果您确实要停止执行或true,则最后一个返回值必须为false。所以同样可以实现:

android.util.Log.v("MyApp", "my message");
return false;

或者你可以制作更复杂的陈述,如:

if( t.isNumber() ) {
    System.out.println("A number found");
} else {
    System.out.println("Not a number");
    return true; // stops execution
}
android.util.Log.v("MyApp", "my message");
return false; // does not stop execution