Skip to content
  • Igor Kushnir's avatar
    debugger: detect pending lldb-mi breakpoints · c62f533e
    Igor Kushnir authored
    The value of the "addr" field for a pending lldb-mi breakpoint is
    "0xffffffffffffffff". MIBreakpointController::updateFromDebugger()
    compares the "addr" field value to the differing GDB/MI's pending value
    of "<PENDING>". Therefore, pending lldb-mi breakpoints are never
    detected. This is why breakpoints are never displayed as pending in the
    UI during a LLDB debug session. And test_lldb functions that check the
    pending state are either unconditionally skipped or XFAIL.
    
    Introduce a new virtual function
    MIBreakpointController::pendingBreakpointAddress() and override it in
    GDB::BreakpointController and LLDB::BreakpointController to detect all
    pending breakpoints. Now pending breakpoints are displayed as such in
    the UI during any debug session. LldbTest::testPendingBreakpoint() and
    LldbTest::testBreakpointsOnNoOpLines() fully pass.
    
    TestDebugSession is a dummy debug session, which does not actually use
    any machine interface and therefore never invokes
    pendingBreakpointAddress(). Derive a trivial class
    TestMIBreakpointController from MIBreakpointController and return an
    empty string from its pendingBreakpointAddress(); use the new class in
    TestDebugSession instead of the now-abstract MIBreakpointController.
    c62f533e
Loading