diff --git a/pykd/pytypedvar.cpp b/pykd/pytypedvar.cpp index 6cc3f70..0060436 100644 --- a/pykd/pytypedvar.cpp +++ b/pykd/pytypedvar.cpp @@ -75,7 +75,11 @@ python::list TypedVarAdapter::getFields( kdlib::TypedVar& typedVar ) for ( size_t i = 0; i < typedVar.getElementCount(); ++i ) { std::wstring name = typedVar.getElementName(i); - kdlib::MEMOFFSET_32 offset = typedVar.getElementOffset(i); + kdlib::MEMOFFSET_32 offset = 0; + + if (!typedVar.getType()->isStaticMember(i) ) + offset = typedVar.getElementOffset(i); + kdlib::TypedVarPtr val = typedVar.getElement(i); lst.push_back( FieldTuple( name, offset, val ) ); diff --git a/test/scripts/typedvar.py b/test/scripts/typedvar.py index 4e58a66..481f7a6 100644 --- a/test/scripts/typedvar.py +++ b/test/scripts/typedvar.py @@ -325,3 +325,7 @@ class TypedVarTest( unittest.TestCase ): self.assertTrue( tv.getDebugStart() >= tv.getAddress() ) self.assertTrue( tv.getDebugEnd() <= tv.getAddress() + tv.sizeof() ) + + def testFields(self): + tv = pykd.typedVar( "g_classChild") + self.assertTrue( len(tv.fields())>0 )