Skip to main content
Visitor II
April 15, 2025
Question

SWO doesn't work in VScode

  • April 15, 2025
  • 1 reply
  • 1184 views

Good afternoon,

I'm trying to use the SWO with a NUCLEO-G431KB board in VScode.

I've generated a project with CubeMX, imported it with the VScode extension and modified the launch.json file by adding 

"swoConfig": {
 "enabled": true,
 "cpuFrequency": 170000000,
 "swoFrequency": 2000000,
 "source": "probe",
 "decoders": [
 { 
 "type": "console",
 "label": "ITM",
 "showOnStartup": true,
 "port": 0,
 "encoding": "ascii"
 }
 ]
 },

However, when I launch the debugger, I get the warning "SWO support is not available from the probe when using the ST-Link GDB server. Disabling SWO.". Looking online it seems that it should work with the ST-Link GDB server, so am I misisng something obvious?

Is there a way to have SWO working in VScode?

Thanks you!

I add the full launch.json file for completeness:

{
 // Use IntelliSense to learn about possible attributes.
 // Hover to view descriptions of existing attributes.
 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
 "version": "0.2.0",
 "configurations": [
 {
 "name": "Build & Debug Microcontroller - ST-Link",
 "cwd": "${workspaceFolder}",
 "type": "cortex-debug",
 "executable": "${command:cmake.launchTargetPath}",
 // Let CMake extension decide executable: "${command:cmake.launchTargetPath}"
 // Or fixed file path: "${workspaceFolder}/path/to/filename.elf"
 "request": "launch",
 "servertype": "stlink",
 "device": "STM32G431KBTx", //MCU used
 "interface": "swd",
 "serialNumber": "", //Set ST-Link ID if you use multiple at the same time
 "runToEntryPoint": "main",
 "svdFile": "${config:STM32VSCodeExtension.cubeCLT.path}/STMicroelectronics_CMSIS_SVD/STM32G431.svd",
 "v1": false, //Change it depending on ST Link version
 "serverpath": "${config:STM32VSCodeExtension.cubeCLT.path}/STLink-gdb-server/bin/ST-LINK_gdbserver",
 "stm32cubeprogrammer":"${config:STM32VSCodeExtension.cubeCLT.path}/STM32CubeProgrammer/bin",
 "stlinkPath": "${config:STM32VSCodeExtension.cubeCLT.path}/STLink-gdb-server/bin/ST-LINK_gdbserver", 
 "armToolchainPath": "${config:STM32VSCodeExtension.cubeCLT.path}/GNU-tools-for-STM32/bin",
 "gdbPath":"${config:STM32VSCodeExtension.cubeCLT.path}/GNU-tools-for-STM32/bin/arm-none-eabi-gdb", 
 "serverArgs": [
 "-m","0",
 ],
 "swoConfig": {
 "enabled": true,
 "cpuFrequency": 170000000,
 "swoFrequency": 2000000,
 "source": "probe",
 "decoders": [
 { 
 "type": "console",
 "label": "ITM",
 "showOnStartup": true,
 "port": 0,
 "encoding": "ascii"
 }
 ]
 },
 //"preLaunchTask": "Build + Flash"
 /* If you use external loader, add additional arguments */
 //"serverArgs": ["--extload", "path/to/ext/loader.stldr"],
 },
 {
 "name": "Attach to Microcontroller - ST-Link",
 "cwd": "${workspaceFolder}",
 "type": "cortex-debug",
 "executable": "${command:cmake.launchTargetPath}",
 // Let CMake extension decide executable: "${command:cmake.launchTargetPath}"
 // Or fixed file path: "${workspaceFolder}/path/to/filename.elf"
 "request": "attach",
 "servertype": "stlink",
 "device": "STM32G431KBTx", //MCU used
 "interface": "swd",
 "serialNumber": "", //Set ST-Link ID if you use multiple at the same time
 "runToEntryPoint": "main",
 "svdFile": "${config:STM32VSCodeExtension.cubeCLT.path}/STMicroelectronics_CMSIS_SVD/STM32G431.svd",
 "v1": false, //Change it depending on ST Link version
 "serverpath": "${config:STM32VSCodeExtension.cubeCLT.path}/STLink-gdb-server/bin/ST-LINK_gdbserver",
 "stm32cubeprogrammer":"${config:STM32VSCodeExtension.cubeCLT.path}/STM32CubeProgrammer/bin",
 "stlinkPath": "${config:STM32VSCodeExtension.cubeCLT.path}/STLink-gdb-server/bin/ST-LINK_gdbserver", 
 "armToolchainPath": "${config:STM32VSCodeExtension.cubeCLT.path}/GNU-tools-for-STM32/bin",
 "gdbPath":"${config:STM32VSCodeExtension.cubeCLT.path}/GNU-tools-for-STM32/bin/arm-none-eabi-gdb", 
 "serverArgs": [
 "-m","0",
 ],
 /* If you use external loader, add additional arguments */
 //"serverArgs": ["--extload", "path/to/ext/loader.stldr"],
 }
 ]
}

 

    This topic has been closed for replies.

    1 reply

    ST Employee
    April 15, 2025

    Hello @vector

    Are yo using this cortex debug extension Marus/cortex-debug: Visual Studio Code extension for enhancing debug capabilities for Cortex-M Microcontrollers? It has partial support textane/stlink (st-util) GDB Servers (SWO can only be captured via a serial port)

    Also, have you been able to debug with default debug configuration? 

    "Build & Debug Microcontroller - ST-Link"

     

    vectorAuthor
    Visitor II
    April 15, 2025

    hi @Sarra.S ,

    Yes I'm using that extension. I just noticed that the description I see on vscode says that it doesn't support SWO on STLink. I guess it's an older version. I will try to update it manually and see if this solves the issue.

    Yes, I can debug correctly with the default configuration, only SWO doesn't work. 

    Thank you for your help!