diff --git a/HISTORY.rst b/HISTORY.rst index d84c84da..4d78e58d 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -8,6 +8,11 @@ PlatformIO Core 5 **A professional collaborative platform for embedded development** +5.2.2 (2021-??-??) +~~~~~~~~~~~~~~~~~~ + +- Override debugging firmware loading mode using ``--load-mode`` option for `pio debug `__ command + 5.2.1 (2021-10-11) ~~~~~~~~~~~~~~~~~~ diff --git a/docs b/docs index 8a613430..0a751d47 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit 8a613430957704dfc2e4fc30337020a0a80cfba8 +Subproject commit 0a751d47b2f41a7888d43e5e390f6201279c34e5 diff --git a/platformio/commands/debug.py b/platformio/commands/debug.py index d0cbf233..290144b8 100644 --- a/platformio/commands/debug.py +++ b/platformio/commands/debug.py @@ -31,6 +31,7 @@ from platformio.debug.process.gdb import GDBClientProcess from platformio.project.config import ProjectConfig from platformio.project.exception import ProjectEnvsNotAvailableError from platformio.project.helpers import is_platformio_project +from platformio.project.options import ProjectOptions @click.command( @@ -54,11 +55,21 @@ from platformio.project.helpers import is_platformio_project ), ) @click.option("--environment", "-e", metavar="") +@click.option("--load-mode", type=ProjectOptions["env.debug_load_mode"].type) @click.option("--verbose", "-v", is_flag=True) @click.option("--interface", type=click.Choice(["gdb"])) @click.argument("__unprocessed", nargs=-1, type=click.UNPROCESSED) @click.pass_context -def cli(ctx, project_dir, project_conf, environment, verbose, interface, __unprocessed): +def cli( + ctx, + project_dir, + project_conf, + environment, + load_mode, + verbose, + interface, + __unprocessed, +): app.set_session_var("custom_project_conf", project_conf) # use env variables from Eclipse or CLion @@ -104,7 +115,7 @@ def cli(ctx, project_dir, project_conf, environment, verbose, interface, __unpro rebuild_prog = False preload = debug_config.load_cmds == ["preload"] - load_mode = debug_config.load_mode + load_mode = load_mode or debug_config.load_mode if load_mode == "always": rebuild_prog = preload or not helpers.has_debug_symbols( debug_config.program_path diff --git a/platformio/ide/tpls/vscode/.vscode/launch.json.tpl b/platformio/ide/tpls/vscode/.vscode/launch.json.tpl index e05c7237..eb654808 100644 --- a/platformio/ide/tpls/vscode/.vscode/launch.json.tpl +++ b/platformio/ide/tpls/vscode/.vscode/launch.json.tpl @@ -30,7 +30,10 @@ % "type": "PlatformIO", % "task": ("Pre-Debug (%s)" % env_name) if len(config.envs()) > 1 else "Pre-Debug", % } -% return [debug, predebug] +% noloading = predebug.copy() +% noloading["name"] = "PIO Debug (without uploading)" +% noloading["loadMode"] = "manual" +% return [debug, predebug, noloading] % end % % def _remove_comments(lines):