在java文件中,如果你想直观的知道某个函数是如何被其他函数层层调用的,只需将如下函数findCaller()添加到该函数中,之后就可以通过logcat查看调用过程。
import java.lang.Throwable;
import java.lang.StackTraceElement;
import android.util.Log;
public void findCaller() {
final Throwable mThrowable = new Throwable();
final StackTraceElement[] elements = mThrowable.getStackTrace();
final int len = elements.length;
StackTraceElement item = null;
for (int i = 0; i < len; i++) {
item = elements[i];
Log.i("caller", "Position: " +
item.getClassName() + "." + item.getMethodName()
+ " ---" + item.getLineNumber() + " line");
}
}
而在c++文件中,如果你想直观的知道某个函数是如何被其他函数层层调用的,可按照如下方式
#include <utils/CallStack.h>
...
CallStack stack;
stack.update();
stack.dump();