@(Android研究)[android|打印dalvik指令]android
[TOC]c++
Android5.1.1源碼中提供打印dalvik指令的函數,該函數名爲:TraceExecution,函數定義在文件"art/runtime/interpreter/interpreter_common.h"中,下面是該函數的部分源碼:函數
static inline void TraceExecution(const ShadowFrame& shadow_frame, const Instruction* inst, const uint32_t dex_pc, MethodHelper& mh) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { constexpr bool kTracing = false; if (kTracing) { ...... } }
能夠發現該函數中的邏輯默認是不會執行的,這是由於kTracing等於false,當設置kTracing爲true時會打印出指令信息。ui
TraceExecution函數在ExecuteSwitchImpl函數中被調用,ExecuteSwitchImpl函數用於執行dalvik指令,該函數定義在文件"art/runtime/interpreter/interpreter_switch_impl.cc"中。code