我知道,有一种方法可以看到在log-cat中调用哪些函数就是为每个函数在上面写一条日志消息
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("myTag","onDestroy function is called!");
// some logic
}
但是当你有更多的功能时,它会变得很烦人。
所以,我想知道是否有办法在adb-logcat中调用哪些函数而不为每个函数编写日志消息。
我希望它们可以从堆栈中的某个地方获取,但我找不到它。
答案 0 :(得分:2)
您可以尝试Hugo。在这种情况下,您只需使用@DebugLog
注释您的方法。然后Hugo将为您生成日志(并将打印出参数并返回值!)。来自GitHub的例子:
@DebugLog
public String getName(String first, String last) {
SystemClock.sleep(15); // Don't ever really do this!
return first + " " + last;
}
并记录输出:
V/Example: ⇢ getName(first="Jake", last="Wharton")
V/Example: ⇠ getName [16ms] = "Jake Wharton"
答案 1 :(得分:0)
您可以使用其中一种
String name = new Object(){}.getClass().getEnclosingMethod().getName();
或
Thread.currentThread().getStackTrace();
以更精致的方式使用此
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[1]; //coz 0th will be getStackTrace so 1st
String methodName = e.getMethodName();
System.out.println(methodName);
来源:Google;)
答案 2 :(得分:0)
而不是在每个功能中打印日志。我(或大多数人)会建议你进行调试。
要使用调试,请首先在要检查的每个函数中创建断点。要应用断点,只需左键单击代码左侧的区域(参见图像,粉色圆圈表示断点)。
然后要使用Debug,您必须在成功运行应用程序后按此按钮。
一旦第一个方法被调用,你的应用程序就会在断点处暂停,那么你可以使用F8(如果使用eclipse设置则使用F6)移动到下一行,移动到下一个断点你可以按F9(如果使用eclipse设置则按F8)。这种方式可以检查被调用的所有函数。
如果您只想确保调用特定函数,这个断点方法非常有用。
除此之外,如果你仍然坚持知道所有功能的细节,你可以存储堆栈跟踪。
final StackTraceElement[] trace = new Throwable().getStackTrace())
StackTraceElement STrace = trace[1];
String className = STrace.getMethodName();