| from __future__ import print_function |
| |
| |
| import gdbremote_testcase |
| import lldbgdbserverutils |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test import lldbutil |
| |
| |
| class TestGdbRemoteAttach(gdbremote_testcase.GdbRemoteTestCaseBase): |
| |
| mydir = TestBase.compute_mydir(__file__) |
| |
| @skipIfDarwinEmbedded # <rdar://problem/34539270> lldb-server tests not updated to work on ios etc yet |
| def attach_with_vAttach(self): |
| # Start the inferior, start the debug monitor, nothing is attached yet. |
| procs = self.prep_debug_monitor_and_inferior( |
| inferior_args=["sleep:60"]) |
| self.assertIsNotNone(procs) |
| |
| # Make sure the target process has been launched. |
| inferior = procs.get("inferior") |
| self.assertIsNotNone(inferior) |
| self.assertTrue(inferior.pid > 0) |
| self.assertTrue( |
| lldbgdbserverutils.process_is_running( |
| inferior.pid, True)) |
| |
| # Add attach packets. |
| self.test_sequence.add_log_lines([ |
| # Do the attach. |
| "read packet: $vAttach;{:x}#00".format(inferior.pid), |
| # Expect a stop notification from the attach. |
| {"direction": "send", |
| "regex": r"^\$T([0-9a-fA-F]{2})[^#]*#[0-9a-fA-F]{2}$", |
| "capture": {1: "stop_signal_hex"}}, |
| ], True) |
| self.add_process_info_collection_packets() |
| |
| # Run the stream |
| context = self.expect_gdbremote_sequence() |
| self.assertIsNotNone(context) |
| |
| # Gather process info response |
| process_info = self.parse_process_info_response(context) |
| self.assertIsNotNone(process_info) |
| |
| # Ensure the process id matches what we expected. |
| pid_text = process_info.get('pid', None) |
| self.assertIsNotNone(pid_text) |
| reported_pid = int(pid_text, base=16) |
| self.assertEqual(reported_pid, inferior.pid) |
| |
| @debugserver_test |
| def test_attach_with_vAttach_debugserver(self): |
| self.init_debugserver_test() |
| self.build() |
| self.set_inferior_startup_attach_manually() |
| self.attach_with_vAttach() |
| |
| @llgs_test |
| def test_attach_with_vAttach_llgs(self): |
| self.init_llgs_test() |
| self.build() |
| self.set_inferior_startup_attach_manually() |
| self.attach_with_vAttach() |