1

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

我该怎么做?不完全清楚,就是这个问题。

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

我认为也许这种机制可以被扭曲以在代码的特定行打印日志消息,而不是停止执行。如果可以做到,我就可以跟踪 Android 的源代码在做什么。

4

1 回答 1

1

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

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
于 2013-05-21T13:27:57.100 回答