[Lldb-commits] [lldb] [lldb][lldb-dap] Added support for "WriteMemory" request. (PR #131820)
Adrian Vogelsgesang via lldb-commits
lldb-commits at lists.llvm.org
Thu Mar 27 06:57:18 PDT 2025
================
@@ -112,3 +112,48 @@ def test_readMemory(self):
# Reads at offset 0x0 fail
mem = self.dap_server.request_readMemory("0x0", 0, 6)
self.assertEqual(mem["success"], False)
+
+ def test_writeMemory(self):
+ """
+ Tests the 'writeMemory' request
+ """
+ program = self.getBuildArtifact("a.out")
+ self.build_and_launch(program)
+ source = "main.cpp"
+ self.source_path = os.path.join(os.getcwd(), source)
+ self.set_source_breakpoints(
+ source,
+ [line_number(source, "// Breakpoint")],
+ )
+ self.continue_to_next_stop()
+
+ # Get the 'not_a_ptr' writable variablle reference address.
+ ptr_deref = self.dap_server.request_evaluate("not_a_ptr")["body"]
+ memref = ptr_deref["memoryReference"]
+
+ # Write the Base64-encoded string "Mg==", which decodes to binary 0x32
+ # which is decimal 50 and corresponds to the SCII character '2'.
+ mem_response = self.dap_server.request_writeMemory(memref, 0, "Mg==")
+ self.assertEqual(mem_response["success"], True)
+ self.assertEqual(mem_response["body"]["bytesWritten"], 1)
+
+ # Read back the modified memory and verify that the written data matches
+ # the expecte result.
+ mem_response = self.dap_server.request_readMemory(memref, 0, 1)
+ self.assertEqual(mem_response["success"], True)
+ self.assertEqual(mem_response["body"]["data"], "Mg==")
+
+ # Memory write failed for 0x0.
+ mem_response = self.dap_server.request_writeMemory("0x0", 0, "Mg==")
+ self.assertEqual(mem_response["success"], False)
+
+ # Malformed memory reference.
+ mem_response = self.dap_server.request_writeMemory("12345", 0, "Mg==")
+ self.assertEqual(mem_response["success"], False)
+
+ ptr_deref = self.dap_server.request_evaluate("nonWritable")["body"]
+ memref = ptr_deref["memoryReference"]
+
+ # Writing to non-writable region should return an appropriate error.
+ mem_response = self.dap_server.request_writeMemory(memref, 0, "Mg==", False)
+ self.assertEqual(mem_response["success"], False)
----------------
vogelsgesang wrote:
actually verify the error message
https://github.com/llvm/llvm-project/pull/131820
More information about the lldb-commits
mailing list