This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG79fbbeb41280: [lldb-vscode] Add postRunCommands (authored by wallace).
Changed prior to commit: https://reviews.llvm.org/D100340?vs=336942&id=339374#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D100340/new/ https://reviews.llvm.org/D100340 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py lldb/test/API/tools/lldb-vscode/attach/TestVSCode_attach.py lldb/test/API/tools/lldb-vscode/launch/TestVSCode_launch.py lldb/tools/lldb-vscode/lldb-vscode.cpp lldb/tools/lldb-vscode/package.json
Index: lldb/tools/lldb-vscode/package.json =================================================================== --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -161,6 +161,11 @@ "description": "Commands executed just before the program is launched.", "default": [] }, + "postRunCommands": { + "type": "array", + "description": "Commands executed just as soon as the program is successfully launched when it's in a stopped state prior to any automatic continuation.", + "default": [] + }, "launchCommands": { "type": "array", "description": "Custom commands that are executed instead of launching a process. A target will be created with the launch arguments prior to executing these commands. The commands may optionally create a new target and must perform a launch. A valid process must exist after these commands complete or the \"launch\" will fail.", @@ -237,6 +242,11 @@ "description": "Commands executed just before the program is attached to.", "default": [] }, + "postRunCommands": { + "type": "array", + "description": "Commands executed just as soon as the program is successfully attached when it's in a stopped state prior to any automatic continuation.", + "default": [] + }, "stopCommands": { "type": "array", "description": "Commands executed each time the program stops.", Index: lldb/tools/lldb-vscode/lldb-vscode.cpp =================================================================== --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -570,6 +570,8 @@ llvm::StringRef core_file = GetString(arguments, "coreFile"); g_vsc.stop_at_entry = core_file.empty() ? GetBoolean(arguments, "stopOnEntry", false) : true; + std::vector<std::string> postRunCommands = + GetStrings(arguments, "postRunCommands"); const llvm::StringRef debuggerRoot = GetString(arguments, "debuggerRoot"); // This is a hack for loading DWARF in .o files on Mac where the .o files @@ -638,12 +640,14 @@ if (error.Fail()) { response["success"] = llvm::json::Value(false); EmplaceSafeString(response, "message", std::string(error.GetCString())); + } else { + g_vsc.RunLLDBCommands("Running postRunCommands:", postRunCommands); } + g_vsc.SendJSON(llvm::json::Value(std::move(response))); if (error.Success()) { SendProcessEvent(Attach); g_vsc.SendJSON(CreateEventObject("initialized")); - // SendThreadStoppedEvent(); } } @@ -1608,6 +1612,8 @@ g_vsc.exit_commands = GetStrings(arguments, "exitCommands"); g_vsc.terminate_commands = GetStrings(arguments, "terminateCommands"); auto launchCommands = GetStrings(arguments, "launchCommands"); + std::vector<std::string> postRunCommands = + GetStrings(arguments, "postRunCommands"); g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false); const llvm::StringRef debuggerRoot = GetString(arguments, "debuggerRoot"); @@ -1689,7 +1695,10 @@ if (error.Fail()) { response["success"] = llvm::json::Value(false); EmplaceSafeString(response, "message", std::string(error.GetCString())); + } else { + g_vsc.RunLLDBCommands("Running postRunCommands:", postRunCommands); } + g_vsc.SendJSON(llvm::json::Value(std::move(response))); if (g_vsc.is_attach) Index: lldb/test/API/tools/lldb-vscode/launch/TestVSCode_launch.py =================================================================== --- lldb/test/API/tools/lldb-vscode/launch/TestVSCode_launch.py +++ lldb/test/API/tools/lldb-vscode/launch/TestVSCode_launch.py @@ -313,12 +313,14 @@ program = self.getBuildArtifact("a.out") initCommands = ['target list', 'platform list'] preRunCommands = ['image list a.out', 'image dump sections a.out'] + postRunCommands = ['help trace', 'help process trace'] stopCommands = ['frame variable', 'bt'] exitCommands = ['expr 2+3', 'expr 3+4'] terminateCommands = ['expr 4+2'] self.build_and_launch(program, initCommands=initCommands, preRunCommands=preRunCommands, + postRunCommands=postRunCommands, stopCommands=stopCommands, exitCommands=exitCommands, terminateCommands=terminateCommands) @@ -330,6 +332,8 @@ self.verify_commands('initCommands', output, initCommands) # Verify all "preRunCommands" were found in console output self.verify_commands('preRunCommands', output, preRunCommands) + # Verify all "postRunCommands" were found in console output + self.verify_commands('postRunCommands', output, postRunCommands) source = 'main.c' first_line = line_number(source, '// breakpoint 1') Index: lldb/test/API/tools/lldb-vscode/attach/TestVSCode_attach.py =================================================================== --- lldb/test/API/tools/lldb-vscode/attach/TestVSCode_attach.py +++ lldb/test/API/tools/lldb-vscode/attach/TestVSCode_attach.py @@ -149,6 +149,7 @@ ] initCommands = ['target list', 'platform list'] preRunCommands = ['image list a.out', 'image dump sections a.out'] + postRunCommands = ['help trace', 'help process trace'] stopCommands = ['frame variable', 'bt'] exitCommands = ['expr 2+3', 'expr 3+4'] terminateCommands = ['expr 4+2'] @@ -158,7 +159,8 @@ preRunCommands=preRunCommands, stopCommands=stopCommands, exitCommands=exitCommands, - terminateCommands=terminateCommands) + terminateCommands=terminateCommands, + postRunCommands=postRunCommands) # Get output from the console. This should contain both the # "initCommands" and the "preRunCommands". output = self.get_console() @@ -166,6 +168,8 @@ self.verify_commands('initCommands', output, initCommands) # Verify all "preRunCommands" were found in console output self.verify_commands('preRunCommands', output, preRunCommands) + # Verify all "postRunCommands" were found in console output + self.verify_commands('postRunCommands', output, postRunCommands) functions = ['main'] breakpoint_ids = self.set_function_breakpoints(functions) Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py =================================================================== --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -494,7 +494,7 @@ initCommands=None, preRunCommands=None, stopCommands=None, exitCommands=None, attachCommands=None, terminateCommands=None, - coreFile=None): + coreFile=None, postRunCommands=None): args_dict = {} if pid is not None: args_dict['pid'] = pid @@ -519,6 +519,8 @@ args_dict['attachCommands'] = attachCommands if coreFile: args_dict['coreFile'] = coreFile + if postRunCommands: + args_dict['postRunCommands'] = postRunCommands command_dict = { 'command': 'attach', 'type': 'request', @@ -621,7 +623,8 @@ stopCommands=None, exitCommands=None, terminateCommands=None ,sourcePath=None, debuggerRoot=None, launchCommands=None, sourceMap=None, - runInTerminal=False, expectFailure=False): + runInTerminal=False, expectFailure=False, + postRunCommands=None): args_dict = { 'program': program } @@ -662,6 +665,8 @@ args_dict['sourceMap'] = sourceMap if runInTerminal: args_dict['runInTerminal'] = runInTerminal + if postRunCommands: + args_dict['postRunCommands'] = postRunCommands command_dict = { 'command': 'launch', 'type': 'request', Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py =================================================================== --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py @@ -251,7 +251,8 @@ def attach(self, program=None, pid=None, waitFor=None, trace=None, initCommands=None, preRunCommands=None, stopCommands=None, exitCommands=None, attachCommands=None, coreFile=None, - disconnectAutomatically=True, terminateCommands=None): + disconnectAutomatically=True, terminateCommands=None, + postRunCommands=None): '''Build the default Makefile target, create the VSCode debug adaptor, and attach to the process. ''' @@ -271,7 +272,7 @@ initCommands=initCommands, preRunCommands=preRunCommands, stopCommands=stopCommands, exitCommands=exitCommands, attachCommands=attachCommands, terminateCommands=terminateCommands, - coreFile=coreFile) + coreFile=coreFile, postRunCommands=postRunCommands) if not (response and response['success']): self.assertTrue(response['success'], 'attach failed (%s)' % (response['message'])) @@ -283,7 +284,7 @@ stopCommands=None, exitCommands=None, terminateCommands=None, sourcePath=None, debuggerRoot=None, launchCommands=None, sourceMap=None, disconnectAutomatically=True, runInTerminal=False, - expectFailure=False): + expectFailure=False, postRunCommands=None): '''Sending launch request to vscode ''' @@ -319,7 +320,8 @@ launchCommands=launchCommands, sourceMap=sourceMap, runInTerminal=runInTerminal, - expectFailure=expectFailure) + expectFailure=expectFailure, + postRunCommands=postRunCommands) if expectFailure: return response @@ -341,7 +343,7 @@ stopCommands=None, exitCommands=None, terminateCommands=None, sourcePath=None, debuggerRoot=None, runInTerminal=False, - disconnectAutomatically=True): + disconnectAutomatically=True, postRunCommands=None): '''Build the default Makefile target, create the VSCode debug adaptor, and launch the process. ''' @@ -352,4 +354,5 @@ disableSTDIO, shellExpandArguments, trace, initCommands, preRunCommands, stopCommands, exitCommands, terminateCommands, sourcePath, debuggerRoot, runInTerminal=runInTerminal, - disconnectAutomatically=disconnectAutomatically) + disconnectAutomatically=disconnectAutomatically, + postRunCommands=postRunCommands)
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits