Files
clang-p2996/lldb/test/API/functionalities/deleted-executable/TestDeletedExecutable.py
Michał Górny f21e704d4a [lldb] [Process/NetBSD] Copy the recent improvements from FreeBSD
Copy the recent improvements from the FreeBSDRemote plugin, notably:

- moving event reporting setup into SetupTrace() helper

- adding more debug info into SIGTRAP handling

- handling user-generated (and unknown) SIGTRAP events

- adding missing error handling to the generic signal handler

- fixing attaching to processes

- switching watchpoint helpers to use llvm::Error

- minor style and formatting changes

This fixes a number of tests, mostly related to fixed attaching.

Differential Revision: https://reviews.llvm.org/D91167
2020-11-10 20:20:44 +01:00

46 lines
1.4 KiB
Python

"""
Test process attach when executable was deleted.
"""
import os
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class TestDeletedExecutable(TestBase):
mydir = TestBase.compute_mydir(__file__)
NO_DEBUG_INFO_TESTCASE = True
@skipIfWindows # cannot delete a running executable
@expectedFailureAll(oslist=["freebsd", "linux"],
triple=no_match('aarch64-.*-android'))
# determining the architecture of the process fails
@skipIfReproducer # File synchronization is not supported during replay.
def test(self):
self.build()
exe = self.getBuildArtifact("a.out")
# Use a file as a synchronization point between test and inferior.
pid_file_path = lldbutil.append_to_process_working_directory(self,
"token_pid_%d" % (int(os.getpid())))
self.addTearDownHook(
lambda: self.run_platform_command(
"rm %s" %
(pid_file_path)))
# Spawn a new process
popen = self.spawnSubprocess(exe, [pid_file_path])
# Wait until process has fully started up.
pid = lldbutil.wait_for_file_on_target(self, pid_file_path)
# Now we can safely remove the executable and test if we can attach.
os.remove(exe)
self.runCmd("process attach -p " + str(popen.pid))
self.runCmd("kill")