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