From a6e26eecd6b01e067ec0613f499fad6597e46141 Mon Sep 17 00:00:00 2001 From: "SND\\ussrhero_cp" <SND\ussrhero_cp@9b283d60-5439-405e-af05-b73fd8c4d996> Date: Fri, 8 Jul 2016 21:58:16 +0000 Subject: [PATCH] [0.3.x] added : supported static local variables git-svn-id: https://pykd.svn.codeplex.com/svn@91002 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/pycpucontext.cpp | 22 ++++++++++++++++++++++ pykd/pycpucontext.h | 2 ++ 2 files changed, 24 insertions(+) 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); } };