在调试工作中要了解系统正在做什么我想使用java调试器条件断点机制在Android的源代码中的特定行上打印日志消息。
我该怎么办?我完全不知道这个问题是什么。
我知道的事情:
Eclipse java调试器具有"条件断点" ,即您在代码中设置断点并编写条件。每次代码到达断点行时,只有在您编写的条件为true
时才会停止执行,否则它将不会停止。
虽然我可能会扭曲此机制以在代码中的特定行打印日志消息,而不是停止执行。如果可以,我可以跟踪Android的源代码正在做什么。
答案 0 :(得分:1)
您可以在条件断点中使用以下表达式:
android.util.Log.v("MyApp", "my message") == -1
这将使您的断点不会中断执行,并且在LogCat视图中,使用tag:MyApp
表达式过滤视图,您将获得所需的已记录消息。您还可以使用其他日志级别(a
,i
,e
,w
)。有关详细信息,请参阅日志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