""" 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): @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") target = self.dbg.CreateTarget(exe) self.assertTrue(target, VALID_TARGET) self.registerSanitizerLibrariesWithTarget(target) 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("expression foo()", substrs=["(int) $0 = 42"]) self.expect( "thread list", STOPPED_DUE_TO_BREAKPOINT, substrs=["stopped", "stop reason = breakpoint"], )