diff --git a/pykd/pyeventhandler.cpp b/pykd/pyeventhandler.cpp index 7da46a5..9a94222 100644 --- a/pykd/pyeventhandler.cpp +++ b/pykd/pyeventhandler.cpp @@ -462,6 +462,7 @@ Breakpoint* Breakpoint::getBreakpointByIndex(unsigned long index) void Breakpoint::remove() { + AutoRestorePyState pystate; m_breakpoint->remove(); m_breakpoint = 0; } diff --git a/test/scripts/breakpoint.py b/test/scripts/breakpoint.py index 9e3f9bb..c87f42c 100644 --- a/test/scripts/breakpoint.py +++ b/test/scripts/breakpoint.py @@ -114,6 +114,7 @@ class BreakpointTest( unittest.TestCase ): self.assertEqual( 1, handler.count ) + def testBreakpointClass(self): class MyBreakpoint(pykd.breakpoint): @@ -165,7 +166,6 @@ class BreakpointTest( unittest.TestCase ): bp = pykd.setBp( targetModule.CdeclFunc, makebpcallback(100) ) self.assertEqual( pykd.executionStatus.NoDebuggee, pykd.go() ) - def testBreakpointEnum(self): processId = pykd.startProcess( target.appPath + " breakhandlertest" ) targetModule = pykd.module( target.moduleName ) @@ -183,3 +183,19 @@ class BreakpointTest( unittest.TestCase ): map( lambda bp: bp.remove(), bpLst) self.assertEqual(0, pykd.getNumberBreakpoints()); + def testBreakpointChangeHandler(self): + + class BreakpointChangeHandler( pykd.eventHandler ): + + def onChangeBreakpoints(self): + pass + + processId = pykd.startProcess( target.appPath + " breakhandlertest" ) + targetModule = pykd.module( target.moduleName ) + targetModule.reload() + with testutils.ContextCallIt( testutils.KillProcess(processId) ) as killStartedProcess : + pykd.go() + handler = BreakpointChangeHandler() + bp = pykd.setBp( targetModule.CdeclFunc) + bp.remove() + self.assertEqual(0, pykd.getNumberBreakpoints())