| # Copyright (c) 2018 Open Source Foundries Limited. |
| # Copyright 2019 Foundries.io |
| # Copyright (c) 2020 Nordic Semiconductor ASA |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| '''west "debug", "debugserver", and "attach" commands.''' |
| |
| from textwrap import dedent |
| |
| from west.commands import WestCommand |
| |
| from run_common import add_parser_common, do_run_common |
| |
| |
| class Debug(WestCommand): |
| |
| def __init__(self): |
| super(Debug, self).__init__( |
| 'debug', |
| # Keep this in sync with the string in west-commands.yml. |
| 'flash and interactively debug a Zephyr application', |
| dedent(''' |
| Connect to the board, flash the program, and start a |
| debugging session. Use "west attach" instead to attach |
| a debugger without reflashing.'''), |
| accepts_unknown_args=True) |
| self.runner_key = 'debug-runner' # in runners.yaml |
| |
| def do_add_parser(self, parser_adder): |
| return add_parser_common(self, parser_adder) |
| |
| def do_run(self, my_args, runner_args): |
| do_run_common(self, my_args, runner_args) |
| |
| |
| class DebugServer(WestCommand): |
| |
| def __init__(self): |
| super(DebugServer, self).__init__( |
| 'debugserver', |
| # Keep this in sync with the string in west-commands.yml. |
| 'connect to board and launch a debug server', |
| dedent(''' |
| Connect to the board and launch a debug server which accepts |
| incoming connections for debugging the connected board. |
| |
| The debug server binds to a known port, and allows client software |
| started elsewhere to connect to it and debug the running |
| Zephyr image.'''), |
| accepts_unknown_args=True) |
| self.runner_key = 'debug-runner' # in runners.yaml |
| |
| def do_add_parser(self, parser_adder): |
| return add_parser_common(self, parser_adder) |
| |
| def do_run(self, my_args, runner_args): |
| do_run_common(self, my_args, runner_args) |
| |
| |
| class Attach(WestCommand): |
| |
| def __init__(self): |
| super(Attach, self).__init__( |
| 'attach', |
| # Keep this in sync with the string in west-commands.yml. |
| 'interactively debug a board', |
| "Like \"west debug\", but doesn't reflash the program.", |
| accepts_unknown_args=True) |
| self.runner_key = 'debug-runner' # in runners.yaml |
| |
| def do_add_parser(self, parser_adder): |
| return add_parser_common(self, parser_adder) |
| |
| def do_run(self, my_args, runner_args): |
| do_run_common(self, my_args, runner_args) |
| |
| |
| class Rtt(WestCommand): |
| |
| def __init__(self): |
| super(Rtt, self).__init__( |
| 'rtt', |
| # Keep this in sync with the string in west-commands.yml. |
| 'open an rtt shell', |
| "", |
| accepts_unknown_args=True) |
| self.runner_key = 'rtt-runner' # in runners.yaml |
| |
| def do_add_parser(self, parser_adder): |
| return add_parser_common(self, parser_adder) |
| |
| def do_run(self, my_args, runner_args): |
| do_run_common(self, my_args, runner_args) |