mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-21 04:13:22 +08:00
[0.3.x] added : fucntion debug range
git-svn-id: https://pykd.svn.codeplex.com/svn@88556 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
bd6ce0adaa
commit
9dca38d926
@ -595,6 +595,10 @@ BOOST_PYTHON_MODULE( pykd )
|
|||||||
.def("__init__", python::make_constructor(pykd::getTypedVarByTypeInfo) )
|
.def("__init__", python::make_constructor(pykd::getTypedVarByTypeInfo) )
|
||||||
.def("getAddress", TypedVarAdapter::getAddress,
|
.def("getAddress", TypedVarAdapter::getAddress,
|
||||||
"Return virtual address" )
|
"Return virtual address" )
|
||||||
|
.def("getDebugStart", TypedVarAdapter::getDebugStart,
|
||||||
|
"Return end location of the function's prologue code (virtual address)" )
|
||||||
|
.def("getDebugEnd", TypedVarAdapter::getDebugEnd,
|
||||||
|
"Return beginning location of the function's epilogue code (virtual address)" )
|
||||||
.def("sizeof", TypedVarAdapter::getSize,
|
.def("sizeof", TypedVarAdapter::getSize,
|
||||||
"Return size of a variable in the target memory" )
|
"Return size of a variable in the target memory" )
|
||||||
.def("fieldOffset", TypedVarAdapter::getFieldOffsetByName,
|
.def("fieldOffset", TypedVarAdapter::getFieldOffsetByName,
|
||||||
|
@ -56,6 +56,18 @@ struct TypedVarAdapter {
|
|||||||
return typedVar.getAddress();
|
return typedVar.getAddress();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static kdlib::MEMOFFSET_64 getDebugStart( kdlib::TypedVar& typedVar )
|
||||||
|
{
|
||||||
|
AutoRestorePyState pystate;
|
||||||
|
return typedVar.getDebugStart();
|
||||||
|
}
|
||||||
|
|
||||||
|
static kdlib::MEMOFFSET_64 getDebugEnd( kdlib::TypedVar& typedVar )
|
||||||
|
{
|
||||||
|
AutoRestorePyState pystate;
|
||||||
|
return typedVar.getDebugEnd();
|
||||||
|
}
|
||||||
|
|
||||||
static size_t getSize( kdlib::TypedVar& typedVar )
|
static size_t getSize( kdlib::TypedVar& typedVar )
|
||||||
{
|
{
|
||||||
AutoRestorePyState pystate;
|
AutoRestorePyState pystate;
|
||||||
|
@ -78,3 +78,5 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite() )
|
unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite() )
|
||||||
|
|
||||||
|
# raw_input("Press <ENTER>...")
|
||||||
|
|
||||||
|
@ -325,3 +325,9 @@ class TypedVarTest( unittest.TestCase ):
|
|||||||
def testHresult(self):
|
def testHresult(self):
|
||||||
tv = pykd.typedVar( "g_atlException" )
|
tv = pykd.typedVar( "g_atlException" )
|
||||||
self.assertEqual( tv.m_hr, 0x8000FFFF )
|
self.assertEqual( tv.m_hr, 0x8000FFFF )
|
||||||
|
|
||||||
|
def testFunctionDebugRange(self):
|
||||||
|
tv = pykd.typedVar( "startChildProcess" )
|
||||||
|
|
||||||
|
self.assertTrue( tv.getDebugStart() >= tv.getAddress() )
|
||||||
|
self.assertTrue( tv.getDebugEnd() <= tv.getAddress() + tv.sizeof() )
|
||||||
|
Loading…
Reference in New Issue
Block a user