-
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