mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-19 19: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
|
||||
|
@ -66,6 +66,8 @@ public:
|
||||
|
||||
static void removeBreakpointByIndex(unsigned long index);
|
||||
|
||||
static void removeAllBreakpoints();
|
||||
|
||||
public:
|
||||
|
||||
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>()]);
|
||||
python::def( "setBp", &Breakpoint::setHardwareBreakpoint,
|
||||
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" );
|
||||
python::def( "getBp", &Breakpoint::getBreakpointByIndex, python::return_value_policy<python::manage_new_object>(),
|
||||
"Return breakpoint object by index");
|
||||
python::def("removeBp", &Breakpoint::removeBreakpointByIndex,
|
||||
"Remove breakpoint by index");
|
||||
python::def("removeAllBp", &Breakpoint::removeAllBreakpoints,
|
||||
"Remove all breakpoints");
|
||||
|
||||
// processes and threads
|
||||
python::def ( "getNumberProcesses", pykd::getNumberProcesses,
|
||||
|
@ -44,16 +44,25 @@ class BreakpointTest( unittest.TestCase ):
|
||||
bp.remove()
|
||||
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):
|
||||
bp1 = pykd.setBp( self.targetModule.CdeclFunc )
|
||||
bp2 = pykd.getBp(0)
|
||||
bp2.remove()
|
||||
self.assertEqual( pykd.executionStatus.NoDebuggee, pykd.go() )
|
||||
|
||||
def disable_testDeleteBp(self):
|
||||
bp = pykd.setBp( self.targetModule.CdeclFunc )
|
||||
del bp
|
||||
self.assertEqual( pykd.executionStatus.NoDebuggee, pykd.go() )
|
||||
def testRemoveAllBp(self):
|
||||
bp1 = pykd.setBp( self.targetModule.CdeclFunc )
|
||||
bp2 = pykd.setBp( self.targetModule.CdeclFunc + 1)
|
||||
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):
|
||||
breakCount = callCounter(stopOnBreak)
|
||||
|
Loading…
Reference in New Issue
Block a user