是否可以看到在Logcat中调用哪些函数?

时间:2016-07-22 10:36:05

标签: android adb logcat

我知道,有一种方法可以看到在log-cat中调用哪些函数就是为每个函数在上面写一条日志消息

@Override
protected void onDestroy() {
    super.onDestroy();
    Log.d("myTag","onDestroy function is called!");
    // some logic
}

但是当你有更多的功能时,它会变得很烦人。

所以,我想知道是否有办法在adb-logcat中调用哪些函数而不为每个函数编写日志消息。

我希望它们可以从堆栈中的某个地方获取,但我找不到它。

3 个答案:

答案 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)

而不是在每个功能中打印日志。我(或大多数人)会建议你进行调试。

要使用调试,请首先在要检查的每个函数中创建断点。要应用断点,只需左键单击代码左侧的区域(参见图像,粉色圆圈表示断点)。

enter image description here

然后要使用Debug,您必须在成功运行应用程序后按此按钮。

enter image description here

一旦第一个方法被调用,你的应用程序就会在断点处暂停,那么你可以使用F8(如果使用eclipse设置则使用F6)移动到下一行,移动到下一个断点你可以按F9(如果使用eclipse设置则按F8)。这种方式可以检查被调用的所有函数。

如果您只想确保调用特定函数,这个断点方法非常有用。

除此之外,如果你仍然坚持知道所有功能的细节,你可以存储堆栈跟踪。

  final StackTraceElement[] trace = new Throwable().getStackTrace())
  StackTraceElement   STrace      = trace[1];
  String  className = STrace.getMethodName();
相关问题