diff options
author | dim <dim@FreeBSD.org> | 2016-01-06 20:12:03 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2016-01-06 20:12:03 +0000 |
commit | 78b9749c0a4ea980a8b934645da6ae98fcc665e8 (patch) | |
tree | dd2a1ddf0476664c2b823409c36cbccd52662ca7 /packages/Python/lldbsuite/test/functionalities/attach_resume/TestAttachResume.py | |
parent | 60cb593f9d55fa5ca7a5372b731f2330345b4b9a (diff) | |
download | FreeBSD-src-78b9749c0a4ea980a8b934645da6ae98fcc665e8.zip FreeBSD-src-78b9749c0a4ea980a8b934645da6ae98fcc665e8.tar.gz |
Vendor import of lldb trunk r256945:
https://llvm.org/svn/llvm-project/lldb/trunk@256945
Diffstat (limited to 'packages/Python/lldbsuite/test/functionalities/attach_resume/TestAttachResume.py')
-rw-r--r-- | packages/Python/lldbsuite/test/functionalities/attach_resume/TestAttachResume.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/packages/Python/lldbsuite/test/functionalities/attach_resume/TestAttachResume.py b/packages/Python/lldbsuite/test/functionalities/attach_resume/TestAttachResume.py new file mode 100644 index 0000000..693c0a7 --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/attach_resume/TestAttachResume.py @@ -0,0 +1,73 @@ +""" +Test process attach/resume. +""" + +from __future__ import print_function + + + +import os, time +import lldb +from lldbsuite.test.lldbtest import * +import lldbsuite.test.lldbutil as lldbutil + +exe_name = "AttachResume" # Must match Makefile + +class AttachResumeTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @skipIfRemote + @expectedFailureFreeBSD('llvm.org/pr19310') + @expectedFailureWindows("llvm.org/pr24778") + def test_attach_continue_interrupt_detach(self): + """Test attach/continue/interrupt/detach""" + self.build() + self.process_attach_continue_interrupt_detach() + + def process_attach_continue_interrupt_detach(self): + """Test attach/continue/interrupt/detach""" + + exe = os.path.join(os.getcwd(), exe_name) + + popen = self.spawnSubprocess(exe) + self.addTearDownHook(self.cleanupSubprocesses) + + self.runCmd("process attach -p " + str(popen.pid)) + + self.setAsync(True) + listener = self.dbg.GetListener() + + self.runCmd("c") + lldbutil.expect_state_changes(self, listener, [lldb.eStateRunning]) + + self.runCmd("process interrupt") + lldbutil.expect_state_changes(self, listener, [lldb.eStateStopped]) + + # be sure to continue/interrupt/continue (r204504) + self.runCmd("c") + lldbutil.expect_state_changes(self, listener, [lldb.eStateRunning]) + + self.runCmd("process interrupt") + lldbutil.expect_state_changes(self, listener, [lldb.eStateStopped]) + + # Second interrupt should have no effect. + self.expect("process interrupt", patterns=["Process is not running"], error=True) + + # check that this breakpoint is auto-cleared on detach (r204752) + self.runCmd("br set -f main.cpp -l %u" % (line_number('main.cpp', '// Set breakpoint here'))) + + self.runCmd("c") + lldbutil.expect_state_changes(self, listener, [lldb.eStateRunning, lldb.eStateStopped]) + self.expect('br list', 'Breakpoint not hit', + substrs = ['hit count = 1']) + + # Make sure the breakpoint is not hit again. + self.expect("expr debugger_flag = false", substrs=[" = false"]); + + self.runCmd("c") + lldbutil.expect_state_changes(self, listener, [lldb.eStateRunning]) + + # make sure to detach while in running state (r204759) + self.runCmd("detach") + lldbutil.expect_state_changes(self, listener, [lldb.eStateDetached]) |