Releases: Marus/cortex-debug
V0.1.11
- Improved SVD parsing:
- Fields now support bit ranges being defined with and elements; This would have impacted SVD files supplied by Nordi Semiconductor, Fujitsu and Spansion
- Improved support for repeating fields/registers for "array" style repeats, versus explicitly named repeats; This would have impacted SVD files supplied by Nordic Semiconductor, Microchip/Atmel, and some of NXP's LPC line
- Support for register clusters, to group multiple closely related registers, within peripherals; This would have impacted SVD files supplied by Nordic Semiconductor and Microchip/Atmel
- Fixed issue with values being displayed as if they were signed.
- Improved display of Write-Only registers
- Improved behaviour with the Disassembly View:
- Manual triggered disassembly names will now match those automatically generated by missing source/forced disassembly mode - prevents it from opening two copies of the disassembly.
- If there are multiple functions with the same symbol name (two static functions with the same name in two different compilation units) you can now choose between them when manually opening a disassembly view.
- If you are focused on a manual disassembly view for the current frame the debugger will use instruction level stepping, instead of source line level stepping.
- Added a "postLaunchCommands" property to the supported launch.json properties. This should be an array of GDB commands to send after the main launch/attach sequence (you do not need to include things like "target extended-remote ...", "load", or "monitor reset" as these are generated automatically).
V0.1.10
- The update has a significant refactoring of code to make supporting the expanding list of GDB Servers more feasible. From the user side this necessitates updating your launch.json files as all debug types have now been combined into one common cortex-debug type
- The typical changes needed are to replace *"type": "-gdb" in your launch.json file with "type": "cortex-debug" and "servertype" : "";
- The extension will attempt to map old configurations automatically - but this may not work in all cases; additionally there launch.json editor will not recognize the old types any more
- You no longer specify paths to the individual tools in your launch.json file; now there are settings you can set (either user level or workspace level) for paths to the individual GDB servers as well as the arm toolchain. For the arm toolchain path the setting should point to the toolchains bin directory - not an individual executable - as multiple tools from the toolchain are now used (current arm-none-eabi-gdb and arm-none-eabi-objdump; but possibly others in the future)
- A globals and static scope has been added to the variables view
- A disassembly view has been added. This can show up in three possible ways:
- You can manually view the disassembly for a particular function by selecting the "Cortex-Debug: View Disassembly (Function) command from the command palette and entering the function name. (While you can view the disassembly in this case, stepping will still be based upon source lines currently)
- If the source file cannot be located it will automatically disassemble and display the current function (In this case stepping is by instruction)
- You can force it to always disassembe through the "Cortex-Debug: Set Force Disassembly" command and selecting the "Forced" option.
- SWO Decoding has been significantly overhauled
- It is now possible to use a serial port (such as a FTDI USB to UART) to capture SWO data, allowing the use of SWO output on probes that do not support it natively or have poor performance. To use this set the "source" key under "swoConfig" to the UART device (COM port on Windows).
- The ITM, DWT and TPIU registers needed to match the configuration in the launch.json file will be set automatically; avoiding the need for your firmware to make the configurations. SWO output will still need to be enabled in your firmware though, as this part of the configuration is microcontroller specific.
- A number of configuration options have changed; please edit your launch.json file
- Inital support for the Black Magic Probe has been added; this server has not been tested extensively yet, so there may still be some issues. SWO output through the probe is not currently support when using the Black Magic Probe.
- Fixed issue with Peripheral Register viewer not working after the first launch request
- Fixed a bug with the variables and watches view incorrectly updating the value on a struct/array when a contained element changed
- Updated the view memory output format to match the format used by the hexdump for VSCode extension (https://marketplace.visualstudio.com/items?itemName=slevesque.vscode-hexdump) - this will enable the syntax highlighting, and hopefully in the future the inspector, from that plugin.
Preview Release 4
- Fixed an issue with settings breakpoints in manually opened disassembly views.
Preview Release 3 - v0.1.10
Further improvements to the disassembly view:
- Will now single step in the disassembly view
- Fixes for Symbol Table handling - prevents issues with it not being able to locate weak symbols (as are often used for interrupt handlers) when trying to generate disassembly view.
Preview Release 2 - v0.1.10
In addition to the fixes/additions in Preview Release - v0.1.10 the following issues are address:
- Fixed bugs inherited from Code-Debug plugin related to setting breakpoints (breakpoints could be incorrectly cleared on the backend but not update on the front-end).
- Added basic syntax highlighting for the disassembly view
- Added support for setting breakpoints in the disassembly views
Preview Release - v0.1.10
This is a preview release before deploying to the Visual Studio Code Marketplace for the next release - which has some fairly substantial changes/additions.
- Significant refactoring of the code to make the large number of GDB servers now supported more feasible to maintain
- As a result of this launch.json files should be updated (we attempt to map existing ones, but this may not be perfect). Instead of separate debug types for each server (e.g. jlink-gdb) there is now one debug type (cortex-debug) and a servertype (e.g. jlink)
- Added support for viewing disassembly for functions (accessible through the command pallet)
- Will automatically show a disassembled version if the source is not found
- Ability to force disassembly view through the command pallet (you cannot currently set breakpoints through the disassembly views).
- Fixed bugs in the Cortex Peripherals & Cortex Registers views that caused them to not function properly after the first debug session.
- Improved formatting of the Raw Memory View
- Initial support for the Black Magic Probe (No SWO through the probe); The Black Magic Probe functions significantly different that most other GDB servers - so there may be issues which have not been detected yet.
- Improved SWO decoding:
- Will now automatically configure the ITM, DWT and TPIU based upon the settings provided - so this does not need to be done in code
- You must still configure the SWO output pin in your code - as this is microcontroller dependant
- SWO output can be captured through a separate serial port; this is useful for servers that either do not support SWO capture (PyOCD and St-Util); it may also be preferable for OpenOCD as the OpenOCD SWO output tends to have more jitter
- SWO decoding configuration has changed - you may need to edit your launch.json files
Testing release for v0.1.9 - with support for the texane/stlink Utils GDB server
This release has basic support for the texane/stlink (https://github.com/texane/stlink) GDB server (st-util).
- SWO output is not supported.
RTOS Support Preview Release
This is a preview release of RTOS support. Currently has only bee tested with FreeRTOS, but should in theory work with the other other RTOS's supported by the chosen debug server.
If you are using FreeRTOS with OpenOCD you will need to need to include the appropriate RTOS helper file from OpenOCD (no modifications are needed for J-Link) - see https://github.com/arduino/OpenOCD/blob/master/contrib/rtos-helpers/FreeRTOS-openocd.c
It should be noted that attempting to step through code before the RTOS has been initialized tends to result in unpredictable behaviour. For example:
- OpenOCD will tend to behave erratically if you try to do anything before vTaskStartScheduler() is called in FreeRTOS (I expect there will be some similar point for other RTOS's)
- The J-Link GDB server will hard crash if you attempt to step through your startup code (initialization of bss, static data, etc. - likely because of random data in device memory); although you can usually step through your FreeRTOS task initialization.
If you need to debug your startup code you should disable the RTOS support, only using RTOS support once tasks are actually running within the RTOS.
Preview Release - 0.1.2
This version has fixed bugs with the OpenOCD GDB Server support. Fixes a bug with SWO output, and not finding the correct programs even if they were on the path. This also has an experimental version of SWO support on Windows Environments.
Additionally there are improvements in the SWO graphing functionality:
- Real-Time graphs now show annotations for pauses and resumption of execution (vertical red and green lines - this may look like a brown line when single stepping through execution)
- Graphs will temporarily be paused when execution is paused.
- Graphs stop when debugging is terminated
- A summary view of a real time graph is displayed below the main graph
Preview Release - 0.1.1
Updated some documentation and replaced icon.