Skip to content

[skip changelog] Document debug system in platform specification #882

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 31, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions docs/platform-specification.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ The following automatically generated properties can be used globally in all con
intent, `-DARDUINO_LIB_DISCOVERY_PHASE` was added to `recipe.preproc.macros` during library discovery in Arduino
Builder 1.5.3/Arduino CLI 0.10.0. That flag was replaced by the more flexible `{build.library_discovery_phase}`
property.
- `{compiler.optimization_flags}`: see ["Sketch debugging configuration"](#sketch-debugging-configuration) for details
- `{extra.time.utc}`: Unix time (seconds since 1970-01-01T00:00:00Z) according to the machine the build is running on
- `{extra.time.local}`: Unix time with local timezone and DST offset
- `{extra.time.zone}`: local timezone offset without the DST component
Expand Down Expand Up @@ -538,6 +539,7 @@ used for different purposes:
- **program** a sketch to the target board using an external programmer
- **erase** the target board's flash memory using an external programmer
- burn a **bootloader** into the target board using an external programmer
- **debug** a sketch

Each action has its own recipe and its configuration is done through a set of properties having key starting with
**tools** prefix followed by the tool ID and the action:
Expand Down Expand Up @@ -699,6 +701,32 @@ The file component of the port's path (e.g., `ttyACM0`) is available as the conf

**TODO...**<br> The platform.txt associated with the selected board will be used.

### Sketch debugging configuration

Starting from Arduino CLI 0.9.0 / Arduino Pro IDE v0.0.5-alpha.preview, sketch debugging support is available for
platforms.

The debug action is triggered when the user clicks **Debug > Start Debugging** in the Arduino Pro IDE or runs the
[`arduino-cli debug`](commands/arduino-cli_debug.md) command.

The **debug.tool** property specifies the tool ID of the tool to be used for debugging. A **debug.tool** property may be
defined for each board in boards.txt.

The compiler optimization level that is appropriate for normal usage will often not provide a good experience while
debugging. For this reason, it may be helpful to use different compiler flags when compiling a sketch for use with the
debugger. The flags for use when compiling for debugging can be defined via the **compiler.optimization_flags.debug**
property, and those for normal use via the **compiler.optimization_flags.release** property. The
**compiler.optimization_flags** property will be defined according to one or the other depending on the Arduino Pro
IDE's **Sketch > Optimize for Debugging** setting or [`arduino-cli compile`](commands/arduino-cli_compile.md)'s
`--optimize-for-debug` option.

The debug recipe is defined via **tools.TOOL_NAME.debug.pattern**. It can be built concatenating the following
automatically generated properties:

- `{interpreter}`: the GDB command interpreter to use. It is configurable via
[`arduino-cli debug --interpreter`](commands/arduino-cli_debug.md). This property was added in Arduino CLI 0.10.0 /
Arduino Pro IDE v0.0.7-alpha.preview.

## Custom board options

It can sometimes be useful to provide user selectable configuration options for a specific board. For example, a board
Expand Down