From 4d20a25e88db406a1e98f174c84f70b380d5a7bb Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Mon, 27 Nov 2023 16:27:40 +0100 Subject: [PATCH] fix: debugging requires a non empty debug.executable (#2439) * fix: debugging requires a non empty debug.executable * Updated docs --------- Co-authored-by: Cristian Maglie --- commands/debug/debug_info.go | 2 +- docs/UPGRADING.md | 2 ++ docs/platform-specification.md | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/commands/debug/debug_info.go b/commands/debug/debug_info.go index fc7ca57039b..919c75cc1b8 100644 --- a/commands/debug/debug_info.go +++ b/commands/debug/debug_info.go @@ -155,7 +155,7 @@ func getDebugProperties(req *rpc.GetDebugConfigRequest, pme *packagemanager.Expl } } - if !debugProperties.ContainsKey("executable") { + if !debugProperties.ContainsKey("executable") || debugProperties.Get("executable") == "" { return nil, &arduino.FailedDebugError{Message: tr("Debugging not supported for board %s", req.GetFqbn())} } diff --git a/docs/UPGRADING.md b/docs/UPGRADING.md index b37204976fb..44bd8565ba0 100644 --- a/docs/UPGRADING.md +++ b/docs/UPGRADING.md @@ -2264,6 +2264,8 @@ debug.server.openocd.scripts_dir={runtime.tools.openocd-0.10.0-arduino7.path}/sh debug.server.openocd.script={runtime.platform.path}/variants/{build.variant}/{build.openocdscript} ``` +The `debug.executable` key must be present and non-empty for debugging to be supported. + The `debug.server.XXXX` subkeys are optional and also "free text", this means that the configuration may be extended as needed by the specific server. For now only `openocd` is supported. Anyway, if this change works, any other kind of server may be fairly easily added. diff --git a/docs/platform-specification.md b/docs/platform-specification.md index 8e690cb0787..fce10932c4a 100644 --- a/docs/platform-specification.md +++ b/docs/platform-specification.md @@ -1369,12 +1369,15 @@ to provide some debug configuration directives. All the debug directives are grouped under the `debug.*` directives. Here is the complete list of the supported directives: +- `debug.executable`: is the absolute path to the compiled binary of the sketch - `debug.toolchain`: is a unique identifier of the required toolchain, currently we support `gcc` (and compatible) only - `debug.toolchain.path`: is the absolute path to the toolchain directory - `debug.toolchain.prefix`: is the prefix of the toolchain (for example `arm-none-eabi-`) - `debug.server`: is a unique identifier of the required debug server, currently we support only `openocd` - `debug.svd_file`: is the absolute path to the SVD descriptor. +If the `debug.executable` property is not present or is empty debugging will not be allowed. + OpenOCD server specific configurations: - `debug.server.openocd.path`: is the absolute path to the OpenOCD directory