From bdf734a37773039a7ad40df7fa6fb388218ddb97 Mon Sep 17 00:00:00 2001 From: Ben Jackson Date: Fri, 5 Mar 2021 21:10:08 +0000 Subject: [PATCH] Data breakpoints Works with CodeLLDB mostly for named things. Expressions don't seem to be supported by anyone. Fixed some state issues with the connections being retained across restarts in watches. ugh. so messy. Added access type question. Java debug adapter returns broken breakpoints info response --- autoload/vimspector.vim | 8 ++ python3/vimspector/breakpoints.py | 68 +++++++++-- python3/vimspector/debug_session.py | 31 ++++- python3/vimspector/settings.py | 1 + python3/vimspector/variables.py | 110 +++++++++++++++--- .../cpp/simple_c_program/.vimspector.json | 4 +- support/test/cpp/simple_c_program/memory.cpp | 24 ++++ support/test/go/structs/.gitignore | 1 + support/test/go/structs/.vimspector.json | 29 +++++ support/test/go/structs/__debug_bin | Bin 0 -> 1921602 bytes support/test/go/structs/hello-world.go | 25 ++++ .../test/java/test_project/.vimspector.json | 3 + support/test/rust/vimspector_test/src/main.rs | 16 +++ 13 files changed, 294 insertions(+), 26 deletions(-) create mode 100644 support/test/cpp/simple_c_program/memory.cpp create mode 100644 support/test/go/structs/.gitignore create mode 100644 support/test/go/structs/.vimspector.json create mode 100755 support/test/go/structs/__debug_bin create mode 100644 support/test/go/structs/hello-world.go diff --git a/autoload/vimspector.vim b/autoload/vimspector.vim index 4785399e7..1e4ecc22d 100644 --- a/autoload/vimspector.vim +++ b/autoload/vimspector.vim @@ -439,6 +439,14 @@ function! vimspector#ShowDisassembly( ... ) abort py3 _vimspector_session.ShowDisassembly() endfunction +function! vimspector#AddDataBreakpoint( ... ) abort + if !s:Enabled() + return + endif + " TODO: how to set options? + py3 _vimspector_session.AddDataBreakpoint( {} ) +endfunction + function! vimspector#DeleteWatch() abort if !s:Enabled() return diff --git a/python3/vimspector/breakpoints.py b/python3/vimspector/breakpoints.py index 2aab632eb..bbe573537 100644 --- a/python3/vimspector/breakpoints.py +++ b/python3/vimspector/breakpoints.py @@ -219,6 +219,7 @@ def __init__( self, self._func_breakpoints = [] self._exception_breakpoints = None self._configured_breakpoints = {} + self._data_breakponts = [] self._server_capabilities = {} @@ -523,23 +524,21 @@ def _ClearServerBreakpointData( self, conn: DebugAdapterConnection ): if not bp[ 'server_bp' ]: del bp[ 'server_bp' ] - # Clear all instruction breakpoints because they aren't truly portable # across sessions. - # - # TODO: It might be possible to re-resolve the address stored in the - # breakpoint, though this would only work in a limited way (as load - # addresses will frequently not be the same across runs) - - def ShouldKeep( bp ): + def ShouldKeepInsBP( bp ): if not bp[ 'is_instruction_breakpoint' ]: return True if 'address' in bp and bp[ 'session_id' ] != conn.GetSessionId(): return True return False - breakpoints[ : ] = [ bp for bp in breakpoints if ShouldKeep( bp ) ] + breakpoints[ : ] = [ bp for bp in breakpoints if ShouldKeepInsBP( bp ) ] + + # Erase any data breakpoints for this connection too + self._data_breakponts[ : ] = [ bp for bp in self._data_breakponts + if bp[ 'conn' ] != conn.GetSessionId() ] def _CopyServerLineBreakpointProperties( self, @@ -807,7 +806,19 @@ def AddFunctionBreakpoint( self, function, options ): # 'condition': ..., # 'hitCondition': ..., } ) + self.UpdateUI() + + def AddDataBreakpoint( self, + conn: DebugAdapterConnection, + info, + options ): + self._data_breakponts.append( { + 'state': 'ENABLED', + 'conn': conn.GetSessionId(), + 'info': info, + 'options': options + } ) self.UpdateUI() @@ -1014,6 +1025,37 @@ def response_handler( conn, msg, bp_idxs = [] ): failure_handler = response_received ) + if self._data_breakponts and self._server_capabilities[ + 'supportsDataBreakpoints' ]: + connection: DebugAdapterConnection + for connection in self._connections: + breakpoints = [] + for bp in self._data_breakponts: + if bp[ 'state' ] != 'ENABLED': + continue + if bp[ 'conn' ] != connection.GetSessionId(): + continue + if not bp[ 'info' ].get( 'dataId' ): + continue + + data_bp = {} + data_bp.update( bp[ 'options' ] ) + data_bp[ 'dataId' ] = bp[ 'info' ][ 'dataId' ] + breakpoints.append( data_bp ) + + if breakpoints: + self._awaiting_bp_responses += 1 + connection.DoRequest( + lambda msg, conn=connection: response_handler( conn, msg ), + { + 'command': 'setDataBreakpoints', + 'arguments': { + 'breakpoints': breakpoints, + }, + }, + failure_handler = response_received + ) + if self._exception_breakpoints: for connection in self._connections: self._awaiting_bp_responses += 1 @@ -1112,6 +1154,11 @@ def Save( self ): if bps: line[ file_name ] = bps + # TODO: Some way to persis data breakpoints? Currently they require + # variablesReference, which is clearly not something that can be persisted + # + # That said, the spec now seems to support data bps on expressions, though i + # can't see any servers which support that. return { 'line': line, 'function': self._func_breakpoints, @@ -1183,6 +1230,11 @@ def _HideBreakpoints( self ): signs.UnplaceSign( bp[ 'sign_id' ], 'VimspectorBP' ) del bp[ 'sign_id' ] + # TODO could/should we show a sign in the variables view when there's a data + # brakpoint on the variable? Not sure how best to actually do that, but + # maybe the variable view can pass that info when calling AddDataBreakpoint, + # such as the variablesReference/name + def _SignToLine( self, file_name, bp ): if bp[ 'is_instruction_breakpoint' ]: diff --git a/python3/vimspector/debug_session.py b/python3/vimspector/debug_session.py index 941a5f4cb..5e5bbe6f1 100644 --- a/python3/vimspector/debug_session.py +++ b/python3/vimspector/debug_session.py @@ -1016,7 +1016,36 @@ def OnDisassemblyWindowScrolled( self, win_id ): self._disassemblyView.OnWindowScrolled( win_id ) - @CurrentSession() + @ParentOnly() + def AddDataBreakpoint( self, opts, buf = None, line_num = None ): + # Use the parent session, because the _connection_ comes from the + # variable/watch result that is actually chosen + + def add_bp( conn, msg ): + breakpoint_info = msg.get( 'body' ) + if not breakpoint_info: + utils.UserMessage( "Can't set data breakpoint here" ) + return + + if breakpoint_info[ 'dataId' ] is None: + utils.UserMessage( + f"Can't set data breakpoint here: {breakpoint_info[ 'description' ]}" + ) + return + + access_types = breakpoint_info.get( 'accessTypes' ) + if access_types and 'accessType' not in opts: + access_type = utils.SelectFromList( 'What type of access?', + access_types ) + if access_type is not None: + opts[ 'accessType' ] = access_type + + self._breakpoints.AddDataBreakpoint( conn, + breakpoint_info, + opts ) + + self._variablesView.GetDataBreakpointInfo( add_bp, buf, line_num ) + @IfConnected() def AddWatch( self, expression ): self._variablesView.AddWatch( self._connection, diff --git a/python3/vimspector/settings.py b/python3/vimspector/settings.py index 26d6258b3..a4295048e 100644 --- a/python3/vimspector/settings.py +++ b/python3/vimspector/settings.py @@ -92,6 +92,7 @@ 'delete': [ '' ], 'set_value': [ '', '' ], 'read_memory': [ 'm' ], + 'add_data_breakpoint': [ '' ], }, 'stack_trace': { 'expand_or_jump': [ '', '<2-LeftMouse>' ], diff --git a/python3/vimspector/variables.py b/python3/vimspector/variables.py index 4aa9262d6..2c12d9a34 100644 --- a/python3/vimspector/variables.py +++ b/python3/vimspector/variables.py @@ -19,7 +19,7 @@ from functools import partial import typing -from vimspector import utils, settings +from vimspector import utils, settings, session_manager from vimspector.debug_adapter_connection import DebugAdapterConnection @@ -62,13 +62,25 @@ def IsContained( self ): def VariablesReference( self ): assert False + @abc.abstractmethod + def FrameID( self ): + assert False + + @abc.abstractmethod + def Name( self ): + assert False + + @abc.abstractmethod def MemoryReference( self ): - assert None + assert False @abc.abstractmethod def HoverText( self ): return "" + def Update( self, connection ): + self.connection = connection + class Scope( Expandable ): """Holds an expandable scope (a DAP scope dict), with expand/collapse state""" @@ -82,7 +94,14 @@ def VariablesReference( self ): def MemoryReference( self ): return None - def Update( self, scope ): + def FrameID( self ): + return None + + def Name( self ): + return self.scope[ 'name' ] + + def Update( self, connection, scope ): + super().Update( connection ) self.scope = scope def HoverText( self ): @@ -91,8 +110,12 @@ def HoverText( self ): class WatchResult( Expandable ): """Holds the result of a Watch expression with expand/collapse.""" - def __init__( self, connection: DebugAdapterConnection, result: dict ): + def __init__( self, + connection: DebugAdapterConnection, + watch, + result: dict ): super().__init__( connection ) + self.watch = watch self.result = result # A new watch result is marked as changed self.changed = True @@ -103,9 +126,15 @@ def VariablesReference( self ): def MemoryReference( self ): return self.result.get( 'memoryReference' ) + def FrameID( self ): + return self.watch.expression.get( 'frameId' ) + + def Name( self ): + return self.watch.expression.get( 'expression' ) + def Update( self, connection, result ): + super().Update( connection ) self.changed = False - self.connection = connection if self.result[ 'result' ] != result[ 'result' ]: self.changed = True self.result = result @@ -121,8 +150,8 @@ def HoverText( self ): class WatchFailure( WatchResult ): - def __init__( self, connection: DebugAdapterConnection, reason ): - super().__init__( connection, { 'result': reason } ) + def __init__( self, connection: DebugAdapterConnection, watch, reason ): + super().__init__( connection, watch, { 'result': reason } ) self.changed = True @@ -130,7 +159,8 @@ class Variable( Expandable ): """Holds one level of an expanded value tree. Also itself expandable.""" def __init__( self, connection: DebugAdapterConnection, - container: Expandable, variable: dict ): + container: Expandable, + variable: dict ): super().__init__( connection = connection, container = container ) self.variable = variable # A new variable appearing is marked as changed @@ -142,9 +172,15 @@ def VariablesReference( self ): def MemoryReference( self ): return self.variable.get( 'memoryReference' ) + def FrameID( self ): + return self.container.FrameID() + + def Name( self ): + return self.variable[ 'name' ] + def Update( self, connection, variable ): + super().Update( connection ) self.changed = False - self.connection = connection if self.variable[ 'value' ] != variable[ 'value' ]: self.changed = True self.variable = variable @@ -171,6 +207,11 @@ def __init__( self, connection: DebugAdapterConnection, expression: dict ): self.result = None def SetCurrentFrame( self, connection, frame ): + if connection is None: + self.connection = None + self.result.connection = None + return + if self.connection is None: self.connection = connection elif self.connection != connection: @@ -227,6 +268,9 @@ def AddExpandMappings( mappings = None ): for mapping in utils.GetVimList( mappings, 'read_memory' ): vim.command( f'nnoremap { mapping } ' ':call vimspector#ReadMemory()' ) + for mapping in utils.GetVimList( mappings, 'add_data_breakpoint' ): + vim.command( f'nnoremap { mapping } ' + ':call vimspector#AddDataBreakpoint()' ) @@ -323,7 +367,7 @@ def ConnectionClosed( self, connection ): ] for w in self._watches: if w.connection == connection: - w.connection = None + w.SetCurrentFrame( None, None ) def Reset( self ): @@ -363,7 +407,7 @@ def scopes_consumer( message ): if not found: scope = Scope( connection, scope_body ) else: - scope.Update( scope_body ) + scope.Update( connection, scope_body ) new_scopes.append( scope ) @@ -434,7 +478,7 @@ def handler( message ): watch = self._variable_eval if watch.result is None or watch.result.connection != connection: - watch.result = WatchResult( connection, message[ 'body' ] ) + watch.result = WatchResult( connection, watch, message[ 'body' ] ) else: watch.result.Update( connection, message[ 'body' ] ) @@ -543,7 +587,9 @@ def _UpdateWatchExpression( self, watch: Watch, message: dict ): if watch.result is not None: watch.result.Update( watch.connection, message[ 'body' ] ) else: - watch.result = WatchResult( watch.connection, message[ 'body' ] ) + watch.result = WatchResult( watch.connection, + watch, + message[ 'body' ] ) if ( watch.result.IsExpandable() and watch.result.IsExpanded() ): @@ -563,7 +609,7 @@ def _WatchExpressionFailed( self, reason: str, watch: Watch ): # We already have a result for this watch. Wut ? return - watch.result = WatchFailure( watch.connection, reason ) + watch.result = WatchFailure( watch.connection, watch, reason ) self._DrawWatches() def _GetVariable( self, buf = None, line_num = None ): @@ -677,7 +723,6 @@ def GetMemoryReference( self ): if variable is None: return None, None - # TODO: Return the connection too! return variable.connection, variable.MemoryReference() @@ -853,4 +898,39 @@ def SetSyntax( self, syntax ): syntax, self._vars.buf, self._watch.buf ) + + def GetDataBreakpointInfo( self, + then, + buf = None, + line_num = None ): + variable: Expandable + view: View + + variable, view = self._GetVariable( buf, line_num ) + if variable is None: + return None + + if not session_manager.Get().GetSession( + variable.connection.GetSessionId() )._server_capabilities.get( + 'supportsDataBreakpoints' ): + return None + + arguments = { + 'name': variable.Name() + } + frameId = variable.FrameID() + if frameId: + arguments[ 'frameId' ] = frameId + + if variable.IsContained(): + arguments[ 'variablesReference' ] = ( + variable.container.VariablesReference() ) + + variable.connection.DoRequest( lambda msg: then( variable.connection, + msg ), { + 'command': 'dataBreakpointInfo', + 'arguments': arguments, + } ) + + # vim: sw=2 diff --git a/support/test/cpp/simple_c_program/.vimspector.json b/support/test/cpp/simple_c_program/.vimspector.json index f277fc774..e5804cf17 100644 --- a/support/test/cpp/simple_c_program/.vimspector.json +++ b/support/test/cpp/simple_c_program/.vimspector.json @@ -64,7 +64,7 @@ "adapter": "vscode-cpptools", "variables": { "BUILDME": { - "shell": "g++ -o ${workspaceRoot}/test -g -std=c++17 ${workspaceRoot}/test_c.cpp" + "shell": "g++ -o ${workspaceRoot}/test -g -std=c++17 ${file}" }, "arch": { "shell": "uname -m" @@ -86,7 +86,7 @@ "adapter": "vscode-cpptools", "variables": { "BUILDME": { - "shell": "g++ -o ${workspaceRoot}/test -g -std=c++17 ${workspaceRoot}/test_c.cpp" + "shell": "g++ -o ${workspaceRoot}/test -g -std=c++17 ${file}" } }, "configuration": { diff --git a/support/test/cpp/simple_c_program/memory.cpp b/support/test/cpp/simple_c_program/memory.cpp new file mode 100644 index 000000000..cac551ba1 --- /dev/null +++ b/support/test/cpp/simple_c_program/memory.cpp @@ -0,0 +1,24 @@ +struct Test +{ + int x; + int y; +}; + +int main( int argc , char ** argv ) +{ + Test x[] = { + { 1, 2 }, + { 3, 4 }, + { 5, 6 }, + }; + + Test y = { 7, 8 }; + + x[0].x += argc; + argv[ 0 ][ 0 ] = 'x' ; + + y.x += **argv; + y.y += argc * **argv; + + return argc; +} diff --git a/support/test/go/structs/.gitignore b/support/test/go/structs/.gitignore new file mode 100644 index 000000000..242c034c1 --- /dev/null +++ b/support/test/go/structs/.gitignore @@ -0,0 +1 @@ +hello_world diff --git a/support/test/go/structs/.vimspector.json b/support/test/go/structs/.vimspector.json new file mode 100644 index 000000000..da54999a1 --- /dev/null +++ b/support/test/go/structs/.vimspector.json @@ -0,0 +1,29 @@ +{ + "configurations": { + "run-legacy": { + "adapter": "vscode-go", + "configuration": { + "request": "launch", + "program": "${workspaceRoot}/hello-world.go", + "mode": "debug", + "trace": true, + "env": { "GO111MODULE": "off" } + } + }, + "run-delve": { + "adapter": "delve", + "configuration": { + "request": "launch", + "env": { "GO111MODULE": "off" }, + + "mode": "debug", // debug|test + "program": "${workspaceRoot}/hello-world.go" + + // "args": [], + // "buildFlags": ... + // "stackTraceDepth": ..., + // "showGlobalVariables": true, + } + } + } +} diff --git a/support/test/go/structs/__debug_bin b/support/test/go/structs/__debug_bin new file mode 100755 index 0000000000000000000000000000000000000000..919aef79b6d6d4391d06b95608188f1f16da0d8a GIT binary patch literal 1921602 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