Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Differential D51930 Diff 165045 lldb/trunk/packages/Python/lldbsuite/test/functionalities/memory-region/TestMemoryRegion.py
Changeset View
Changeset View
Standalone View
Standalone View
lldb/trunk/packages/Python/lldbsuite/test/functionalities/memory-region/TestMemoryRegion.py
""" | |||||
Test the 'memory region' command. | |||||
""" | |||||
from __future__ import print_function | |||||
import lldb | |||||
from lldbsuite.test.decorators import * | |||||
from lldbsuite.test.lldbtest import * | |||||
from lldbsuite.test import lldbutil | |||||
class MemoryCommandRegion(TestBase): | |||||
mydir = TestBase.compute_mydir(__file__) | |||||
NO_DEBUG_INFO_TESTCASE = True | |||||
def setUp(self): | |||||
TestBase.setUp(self) | |||||
# Find the line number to break for main.c. | |||||
self.line = line_number( | |||||
'main.cpp', | |||||
'// Run here before printing memory regions') | |||||
def test(self): | |||||
self.build() | |||||
# Set breakpoint in main and run | |||||
self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) | |||||
lldbutil.run_break_set_by_file_and_line( | |||||
self, "main.cpp", self.line, num_expected_locations=-1, loc_exact=True) | |||||
self.runCmd("run", RUN_SUCCEEDED) | |||||
interp = self.dbg.GetCommandInterpreter() | |||||
result = lldb.SBCommandReturnObject() | |||||
# Test that the first 'memory region' command prints the usage. | |||||
interp.HandleCommand("memory region", result) | |||||
self.assertFalse(result.Succeeded()) | |||||
self.assertRegexpMatches(result.GetError(), "Usage: memory region ADDR") | |||||
# Now let's print the memory region starting at 0 which should always work. | |||||
interp.HandleCommand("memory region 0x0", result) | |||||
self.assertTrue(result.Succeeded()) | |||||
self.assertRegexpMatches(result.GetOutput(), "\\[0x0+-") | |||||
# Keep printing memory regions until we printed all of them. | |||||
while True: | |||||
interp.HandleCommand("memory region", result) | |||||
if not result.Succeeded(): | |||||
break | |||||
# Now that we reached the end, 'memory region' should again print the usage. | |||||
interp.HandleCommand("memory region", result) | |||||
self.assertFalse(result.Succeeded()) | |||||
self.assertRegexpMatches(result.GetError(), "Usage: memory region ADDR") |