diff --git a/pykd/pycpucontext.cpp b/pykd/pycpucontext.cpp index 578ef11..7bab7c1 100644 --- a/pykd/pycpucontext.cpp +++ b/pykd/pycpucontext.cpp @@ -150,6 +150,7 @@ python::list StackFrameAdapter::getLocalsList(kdlib::StackFramePtr& frame) LocalVarList localLst; unsigned long localCount; + unsigned long staticCount; do { AutoRestorePyState pystate; @@ -161,6 +162,16 @@ python::list StackFrameAdapter::getLocalsList(kdlib::StackFramePtr& frame) localLst.push_back( std::make_pair( paramName, param) ); } + + staticCount = frame->getStaticVarCount(); + for (unsigned long i = 0; i < staticCount; ++i) + { + kdlib::TypedVarPtr param = frame->getStaticVar(i); + std::wstring paramName = frame->getStaticVarName(i); + + localLst.push_back(std::make_pair(paramName, param)); + } + } while(false); python::list pyLst; @@ -179,6 +190,7 @@ python::dict StackFrameAdapter::getLocalsDict(kdlib::StackFramePtr& frame) LocalVarList localLst; unsigned long localCount; + unsigned long staticCount; do { AutoRestorePyState pystate; @@ -190,6 +202,16 @@ python::dict StackFrameAdapter::getLocalsDict(kdlib::StackFramePtr& frame) localLst.push_back( std::make_pair( paramName, param) ); } + + staticCount = frame->getStaticVarCount(); + for (unsigned long i = 0; i < staticCount; ++i) + { + kdlib::TypedVarPtr param = frame->getStaticVar(i); + std::wstring paramName = frame->getStaticVarName(i); + + localLst.push_back(std::make_pair(paramName, param)); + } + } while(false); python::dict pyLst; diff --git a/pykd/pycpucontext.h b/pykd/pycpucontext.h index a81f5bb..a240d9e 100644 --- a/pykd/pycpucontext.h +++ b/pykd/pycpucontext.h @@ -60,6 +60,8 @@ public: static kdlib::TypedVarPtr getLocal( kdlib::StackFramePtr& frame, const std::wstring ¶mName ) { AutoRestorePyState pystate; + if (frame->findStaticVar(paramName)) + return frame->getStaticVar(paramName); return frame->getLocalVar(paramName); } };