mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-21 12:53:23 +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("getAddress", TypedVarAdapter::getAddress,
|
||||
"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,
|
||||
"Return size of a variable in the target memory" )
|
||||
.def("fieldOffset", TypedVarAdapter::getFieldOffsetByName,
|
||||
|
@ -56,6 +56,18 @@ struct TypedVarAdapter {
|
||||
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 )
|
||||
{
|
||||
AutoRestorePyState pystate;
|
||||
|
@ -78,3 +78,5 @@ if __name__ == "__main__":
|
||||
|
||||
unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite() )
|
||||
|
||||
# raw_input("Press <ENTER>...")
|
||||
|
||||
|
@ -325,3 +325,9 @@ class TypedVarTest( unittest.TestCase ):
|
||||
def testHresult(self):
|
||||
tv = pykd.typedVar( "g_atlException" )
|
||||
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