diff --git a/tooling/agent/debugger_impl.cpp b/tooling/agent/debugger_impl.cpp index fecfb8deaeb7866a11c5313b7624dd6cff710e4a..c464de75443dce19c5f7ca65acc150697132e2ea 100644 --- a/tooling/agent/debugger_impl.cpp +++ b/tooling/agent/debugger_impl.cpp @@ -1126,7 +1126,7 @@ void DebuggerImpl::GetClosureVariables(const FrameHandler *frameHandler, Local &localObj) { JSTaggedValue env = DebuggerApi::GetEnv(frameHandler); - if (env.IsTaggedArray() && DebuggerApi::GetBytecodeOffset(frameHandler) != 0) { + for (; env.IsTaggedArray(); env = LexicalEnv::Cast(env.GetTaggedObject())->GetParentEnv()) { LexicalEnv *lexEnv = LexicalEnv::Cast(env.GetTaggedObject()); if (lexEnv->GetScopeInfo().IsHole()) { return; @@ -1141,6 +1141,10 @@ void DebuggerImpl::GetClosureVariables(const FrameHandler *frameHandler, Local value = JSNApiHelper::ToLocal( JSHandle(thread, lexEnv->GetProperties(slot))); + if (value->IsFunction()) { + continue; + } + if (varName == "this") { if (thisVal->IsHole()) { LOG_DEBUGGER(INFO) << "find 'this' in current lexical env";