Index: packages/Python/lldbsuite/test/functionalities/process_attach/TestProcessAttach.py =================================================================== --- packages/Python/lldbsuite/test/functionalities/process_attach/TestProcessAttach.py +++ packages/Python/lldbsuite/test/functionalities/process_attach/TestProcessAttach.py @@ -8,6 +8,7 @@ import os import time import lldb +import shutil from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil @@ -38,6 +39,23 @@ process = target.GetProcess() self.assertTrue(process, PROCESS_IS_VALID) + def test_attach_to_process_frm_different_dir_by_id(self): + """Test attach by process id""" + self.buildProgram('main.cpp','newdir/proc_attach') + exe = os.path.join(os.getcwd(), 'newdir/proc_attach') + self.addTearDownHook(lambda: shutil.rmtree(os.path.dirname(exe))) + + # Spawn a new process + popen = self.spawnSubprocess(exe) + self.addTearDownHook(self.cleanupSubprocesses) + + self.runCmd("process attach -p " + str(popen.pid)) + + target = self.dbg.GetSelectedTarget() + + process = target.GetProcess() + self.assertTrue(process, PROCESS_IS_VALID) + def test_attach_to_process_by_name(self): """Test attach by process name""" self.build() Index: packages/Python/lldbsuite/test/lldbtest.py =================================================================== --- packages/Python/lldbsuite/test/lldbtest.py +++ packages/Python/lldbsuite/test/lldbtest.py @@ -1484,6 +1484,9 @@ """ Platform specific way to build an executable from C/C++ sources. """ d = {'CXX_SOURCES': sources, 'EXE': exe_name} + if not os.path.exists(os.path.dirname(exe_name)): + if os.path.dirname(exe_name): + os.mkdir(os.path.dirname(exe_name)) self.buildDefault(dictionary=d) def buildDefault(