1""" 2Test denied process attach. 3""" 4 5 6 7import time 8import lldb 9from lldbsuite.test.decorators import * 10from lldbsuite.test.lldbtest import * 11from lldbsuite.test import lldbutil 12 13exe_name = 'AttachDenied' # Must match Makefile 14 15 16class AttachDeniedTestCase(TestBase): 17 18 mydir = TestBase.compute_mydir(__file__) 19 NO_DEBUG_INFO_TESTCASE = True 20 21 @skipIfWindows 22 @skipIfiOSSimulator 23 @skipIfDarwinEmbedded # ptrace(ATTACH_REQUEST...) won't work on ios/tvos/etc 24 @skipIfReproducer 25 def test_attach_to_process_by_id_denied(self): 26 """Test attach by process id denied""" 27 self.build() 28 exe = self.getBuildArtifact(exe_name) 29 30 # Use a file as a synchronization point between test and inferior. 31 pid_file_path = lldbutil.append_to_process_working_directory(self, 32 "pid_file_%d" % (int(time.time()))) 33 self.addTearDownHook( 34 lambda: self.run_platform_command( 35 "rm %s" % 36 (pid_file_path))) 37 38 # Spawn a new process 39 popen = self.spawnSubprocess(exe, [pid_file_path]) 40 41 pid = lldbutil.wait_for_file_on_target(self, pid_file_path) 42 43 self.expect('process attach -p ' + pid, 44 startstr='error: attach failed:', 45 error=True) 46