mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-21 12:53:23 +08:00
[0.3.x] added : fixed probably deadlock in breakpoint::remove method
git-svn-id: https://pykd.svn.codeplex.com/svn@89579 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
1f8b79e6c4
commit
cc27289a55
@ -462,6 +462,7 @@ Breakpoint* Breakpoint::getBreakpointByIndex(unsigned long index)
|
|||||||
|
|
||||||
void Breakpoint::remove()
|
void Breakpoint::remove()
|
||||||
{
|
{
|
||||||
|
AutoRestorePyState pystate;
|
||||||
m_breakpoint->remove();
|
m_breakpoint->remove();
|
||||||
m_breakpoint = 0;
|
m_breakpoint = 0;
|
||||||
}
|
}
|
||||||
|
@ -114,6 +114,7 @@ class BreakpointTest( unittest.TestCase ):
|
|||||||
|
|
||||||
self.assertEqual( 1, handler.count )
|
self.assertEqual( 1, handler.count )
|
||||||
|
|
||||||
|
|
||||||
def testBreakpointClass(self):
|
def testBreakpointClass(self):
|
||||||
|
|
||||||
class MyBreakpoint(pykd.breakpoint):
|
class MyBreakpoint(pykd.breakpoint):
|
||||||
@ -165,7 +166,6 @@ class BreakpointTest( unittest.TestCase ):
|
|||||||
bp = pykd.setBp( targetModule.CdeclFunc, makebpcallback(100) )
|
bp = pykd.setBp( targetModule.CdeclFunc, makebpcallback(100) )
|
||||||
self.assertEqual( pykd.executionStatus.NoDebuggee, pykd.go() )
|
self.assertEqual( pykd.executionStatus.NoDebuggee, pykd.go() )
|
||||||
|
|
||||||
|
|
||||||
def testBreakpointEnum(self):
|
def testBreakpointEnum(self):
|
||||||
processId = pykd.startProcess( target.appPath + " breakhandlertest" )
|
processId = pykd.startProcess( target.appPath + " breakhandlertest" )
|
||||||
targetModule = pykd.module( target.moduleName )
|
targetModule = pykd.module( target.moduleName )
|
||||||
@ -183,3 +183,19 @@ class BreakpointTest( unittest.TestCase ):
|
|||||||
map( lambda bp: bp.remove(), bpLst)
|
map( lambda bp: bp.remove(), bpLst)
|
||||||
self.assertEqual(0, pykd.getNumberBreakpoints());
|
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())
|
||||||
|
Loading…
Reference in New Issue
Block a user