Java可以方便的打印函数的调用栈。C/C++也可以
为了显示在vm/Misc.cpp中谁调用了函数dvmAllocRegion,在这个函数中加入下面红色代码:
点击(此处)折叠或打开
- #include <utils/CallStack.h>
- ...
- void *dvmAllocRegion(size_t byteCount,int prot, const char *name){
- ...
- #ifdef _ARM_
- LOGW("name=%s", name);
- android::CallStack stack;
- stack.update(1, 100);
- stack.dump("");
- #endif
- ...
- }
在vm/Dvm.mk中,加入:
LOCAL_CFLAGS += -D_ARM_
LOCAL_SHARED_LIBRARIES += libutils
"mmm dalvik" 得到libdvm.so。然后
adb root
adb remount
adb push libdvm.so /system/lib
adb reboot
系统重启后,新的libdvm.so就投入使用了。
http://blog.chinaunix.net/uid-26669815-id-3201726.html
http://blog.chinaunix.net/uid-26669815-id-3201726.html