diff --git a/python3/vimspector/code.py b/python3/vimspector/code.py index 9d1e37b..5f54e1c 100644 --- a/python3/vimspector/code.py +++ b/python3/vimspector/code.py @@ -295,7 +295,7 @@ class CodeView( object ): return self._terminal.buffer_number - def ShowMemory( self, memoryReference, length, msg ): + def ShowMemory( self, memoryReference, length, offset, msg ): if not self._window.valid: return False @@ -308,7 +308,8 @@ class CodeView( object ): # equivalent output of say xxd data = msg.get( 'body', {} ).get( 'data', '' ) utils.SetBufferContents( buf, [ - f'Memory Dump for Reference {memoryReference} Length: {length} bytes', + f'Memory Dump for Reference {memoryReference} Length: {length} bytes' + f' Offset: {offset}', '-' * 80, 'Offset Bytes Text', '-' * 80, @@ -318,3 +319,6 @@ class CodeView( object ): utils.SetSyntax( '', 'xxd', buf ) utils.JumpToWindow( self._window ) utils.OpenFileInCurrentWindow( buf_name ) + + # TODO: Need to set up some mappings here that allow the user to browse + # around by setting the offset diff --git a/python3/vimspector/debug_session.py b/python3/vimspector/debug_session.py index 31dc165..c8c6ce8 100644 --- a/python3/vimspector/debug_session.py +++ b/python3/vimspector/debug_session.py @@ -536,7 +536,7 @@ class DebugSession( object ): self._variablesView.SetVariableValue( new_value, buf, line_num ) @IfConnected() - def ReadMemory( self, buf = None, line_num = None ): + def ReadMemory( self, offset = None, buf = None, line_num = None ): if not self._server_capabilities.get( 'supportsReadMemoryRequest' ): utils.UserMessage( "Server does not support memory request", error = True ) @@ -554,15 +554,22 @@ class DebugSession( object ): if length is None: return + offset = utils.AskForInput( 'Location offset? ', + default_value = '0' ) + + if offset is None: + return + def handler( msg ): - self._codeView.ShowMemory( memoryReference, length, msg ) + self._codeView.ShowMemory( memoryReference, length, offset, msg ) self._connection.DoRequest( handler, { 'command': 'readMemory', 'arguments': { 'memoryReference': memoryReference, 'count': int( length ), + 'offset': int( offset ) } } )