private static boolean hasBreakpointAtCurrentPosition ( VdmThread thread ) { try { thread . updateStack ( ) ; if ( thread . hasStackFrames ( ) ) { final IStackFrame top = thread . getTopStackFrame ( ) ; if ( top instanceof IVdmStackFrame && top . getLineNumber ( ) > 0 ) { final IVdmStackFrame frame = ( IVdmStackFrame ) top ; if ( frame . getSourceURI ( ) != null ) { final String location = frame . getSourceURI ( ) . getPath ( ) ; final IDbgpBreakpoint [ ] breakpoints = thread . getDbgpSession ( ) . getCoreCommands ( ) . getBreakpoints ( ) ; for ( int i = 0 ; i < breakpoints . length ; ++ i ) { if ( breakpoints [ i ] instanceof IDbgpLineBreakpoint ) { final IDbgpLineBreakpoint bp = ( IDbgpLineBreakpoint ) breakpoints [ i ] ; if ( frame . getLineNumber ( ) == bp . getLineNumber ( ) ) { try { if ( new URI ( bp . getFilename ( ) ) . getPath ( ) . equals ( location ) ) { return true ; } } catch ( URISyntaxException e ) { if ( VdmDebugPlugin . DEBUG ) { e . printStackTrace ( ) ; } } } } } } } } } catch ( DebugException e ) { if ( VdmDebugPlugin . DEBUG ) { e . printStackTrace ( ) ; } } catch ( DbgpException e ) { if ( VdmDebugPlugin . DEBUG ) { e . printStackTrace ( ) ; } } return false ; }
Tests if the specified thread has breakpoint at the same line