""" Test that hitting a UBSan issue while running user expression doesn't break the evaluation. """ import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * import lldbsuite.test.lldbutil as lldbutil class UbsanUserExpressionTestCase(TestBase): mydir = TestBase.compute_mydir(__file__) @skipUnlessUndefinedBehaviorSanitizer def test(self): self.build() self.ubsan_tests() def setUp(self): # Call super's setUp(). TestBase.setUp(self) self.line_breakpoint = line_number('main.c', '// breakpoint line') def ubsan_tests(self): # Load the test exe = self.getBuildArtifact("a.out") self.expect( "file " + exe, patterns=["Current executable set to .*a.out"]) self.runCmd("breakpoint set -f main.c -l %d" % self.line_breakpoint) self.runCmd("run") process = self.dbg.GetSelectedTarget().process thread = process.GetSelectedThread() frame = thread.GetSelectedFrame() self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, substrs=['stopped', 'stop reason = breakpoint']) self.expect("p foo()", substrs=["(int) $0 = 42"]) self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, substrs=['stopped', 'stop reason = breakpoint'])