mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-21 04:13:22 +08:00
[0.3.x] added : removeAllBp routine ( Remove all breakpoints )
git-svn-id: https://pykd.svn.codeplex.com/svn@90876 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
1d25e61d02
commit
fe84574b79
@ -700,6 +700,18 @@ void Breakpoint::removeBreakpointByIndex(unsigned long index)
|
|||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void Breakpoint::removeAllBreakpoints()
|
||||||
|
{
|
||||||
|
AutoRestorePyState pystate;
|
||||||
|
|
||||||
|
while (kdlib::getNumberBreakpoints() > 0)
|
||||||
|
{
|
||||||
|
kdlib::BreakpointPtr bp = kdlib::getBreakpointByIndex(0);
|
||||||
|
bp->remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
} // end namespace pykd
|
} // end namespace pykd
|
||||||
|
@ -66,6 +66,8 @@ public:
|
|||||||
|
|
||||||
static void removeBreakpointByIndex(unsigned long index);
|
static void removeBreakpointByIndex(unsigned long index);
|
||||||
|
|
||||||
|
static void removeAllBreakpoints();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
explicit Breakpoint(kdlib::BreakpointPtr bp, bool weakbp = true);
|
explicit Breakpoint(kdlib::BreakpointPtr bp, bool weakbp = true);
|
||||||
|
@ -389,12 +389,14 @@ BOOST_PYTHON_MODULE( pykd )
|
|||||||
setSoftwareBreakpoint_( python::args( "offset", "callback" ),"Set software breakpoint on executiont" )[python::return_value_policy<python::manage_new_object>()]);
|
setSoftwareBreakpoint_( python::args( "offset", "callback" ),"Set software breakpoint on executiont" )[python::return_value_policy<python::manage_new_object>()]);
|
||||||
python::def( "setBp", &Breakpoint::setHardwareBreakpoint,
|
python::def( "setBp", &Breakpoint::setHardwareBreakpoint,
|
||||||
setHardwareBreakpoint_( python::args( "offset", "size", "accsessType", "callback" ),"Set hardware breakpoint")[python::return_value_policy<python::manage_new_object>()]);
|
setHardwareBreakpoint_( python::args( "offset", "size", "accsessType", "callback" ),"Set hardware breakpoint")[python::return_value_policy<python::manage_new_object>()]);
|
||||||
python::def( "getNumberBreakpoints", &Breakpoint::getNumberBreakpoints,
|
python::def("getNumberBreakpoints", &Breakpoint::getNumberBreakpoints,
|
||||||
"Return number of breakpoints in the current process" );
|
"Return number of breakpoints in the current process" );
|
||||||
python::def( "getBp", &Breakpoint::getBreakpointByIndex, python::return_value_policy<python::manage_new_object>(),
|
python::def( "getBp", &Breakpoint::getBreakpointByIndex, python::return_value_policy<python::manage_new_object>(),
|
||||||
"Return breakpoint object by index");
|
"Return breakpoint object by index");
|
||||||
python::def("removeBp", &Breakpoint::removeBreakpointByIndex,
|
python::def("removeBp", &Breakpoint::removeBreakpointByIndex,
|
||||||
"Remove breakpoint by index");
|
"Remove breakpoint by index");
|
||||||
|
python::def("removeAllBp", &Breakpoint::removeAllBreakpoints,
|
||||||
|
"Remove all breakpoints");
|
||||||
|
|
||||||
// processes and threads
|
// processes and threads
|
||||||
python::def ( "getNumberProcesses", pykd::getNumberProcesses,
|
python::def ( "getNumberProcesses", pykd::getNumberProcesses,
|
||||||
|
@ -44,16 +44,25 @@ class BreakpointTest( unittest.TestCase ):
|
|||||||
bp.remove()
|
bp.remove()
|
||||||
self.assertEqual( pykd.executionStatus.NoDebuggee, pykd.go() )
|
self.assertEqual( pykd.executionStatus.NoDebuggee, pykd.go() )
|
||||||
|
|
||||||
|
def testDeleteBp(self):
|
||||||
|
bp = pykd.setBp( self.targetModule.CdeclFunc )
|
||||||
|
del bp
|
||||||
|
self.assertEqual( pykd.executionStatus.NoDebuggee, pykd.go() )
|
||||||
|
|
||||||
def testRemoveByIndex(self):
|
def testRemoveByIndex(self):
|
||||||
bp1 = pykd.setBp( self.targetModule.CdeclFunc )
|
bp1 = pykd.setBp( self.targetModule.CdeclFunc )
|
||||||
bp2 = pykd.getBp(0)
|
bp2 = pykd.getBp(0)
|
||||||
bp2.remove()
|
bp2.remove()
|
||||||
self.assertEqual( pykd.executionStatus.NoDebuggee, pykd.go() )
|
self.assertEqual( pykd.executionStatus.NoDebuggee, pykd.go() )
|
||||||
|
|
||||||
def disable_testDeleteBp(self):
|
def testRemoveAllBp(self):
|
||||||
bp = pykd.setBp( self.targetModule.CdeclFunc )
|
bp1 = pykd.setBp( self.targetModule.CdeclFunc )
|
||||||
del bp
|
bp2 = pykd.setBp( self.targetModule.CdeclFunc + 1)
|
||||||
self.assertEqual( pykd.executionStatus.NoDebuggee, pykd.go() )
|
bp3 = pykd.setBp( self.targetModule.CdeclFunc + 2 )
|
||||||
|
self.assertEqual( 3, pykd.getNumberBreakpoints() )
|
||||||
|
pykd.removeAllBp()
|
||||||
|
self.assertEqual( 0, pykd.getNumberBreakpoints() )
|
||||||
|
self.assertEqual( pykd.executionStatus.NoDebuggee, pykd.go() )
|
||||||
|
|
||||||
def testBreakCallback(self):
|
def testBreakCallback(self):
|
||||||
breakCount = callCounter(stopOnBreak)
|
breakCount = callCounter(stopOnBreak)
|
||||||
|
Loading…
Reference in New Issue
Block a user