2026-01-08 9:21 PM
Hey Devs,
I migrated my V2 extension to V3 (3.6.4) on Dec 11 2025 (just before the v3.7.0 release), updated my debug workflow / launch.json etc, my STM32H745I discovery board was running my TouchGFX application (basically stock TouchGFX Designer generated app w/ CMake) fine with Dual Core debugging (new shared debugger / simplified Launch/Tasks.json is a massive improvement on my old/convoluted tasks/launcher workflow, my sincere thanks).
Just tried to re-run the same code stack with my code with the new 3.7.0 extensions, hit a launch error relating to my launch.json:
Extension seems to have lost context of my ide.store.json files in the project subfolders:
{
// 'CM4/.settings/ide.store.json' - This line not in actual file
"device": "STM32H745XIH3",
"core": "Cortex-M4",
"order": 0,
"toolchain": "GCC"
}(Similar for the CM7 version targeting the M7 core)
Re-running the STM32Cube Project setup configuration didn't seem to fix it, so I just added 'deviceName' and 'deviceCore' manually to my launch file CM4/CM7 configurations, but would ideally like that bug fixed for dual core projects)
Now running my "DualCore_Debug" compound config throws a gdb server startup issue on the CM4 half of the attach:
With an underlying warning on the CM4_Debug log:
'From Debug Session: step debug conf validation: No image file loaded, see imagesAndSymbols attribute in the debug configuration.'
And the CM7 debugger runs as normal / stops at main, but messes with the dual core startup ASM file timing (stock CM4 domain stop and wait for CM7 configure / continue) so that my application won't initialise correctly, the build is fine, as my app will run in flash / non-debug mode.
Here is my launch.json file (working 3.6.4, no longer in 3.7.0)
{
// 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": "CM7_Debug",
"type": "stlinkgdbtarget", // Debugger type (STMicroelectronics ST-LINK GDB server)
"request": "launch", // Launch a new debug session
"cwd": "${workspaceFolder}",
"preBuild": "${command:st-stm32-ide-debug-launch.build}",
"runEntry": "main",
"deviceName": "STM32H745XIH3",
"deviceCore": "Cortex-M7",
"serverShared": true, // Allows sharing the debug server with other sessions (needed for multi-core)
"serverHaltAllCores": true, // Halts all cores when starting the debug session
"svdPath": "${env:STM32CLT_PATH}/STMicroelectronics_CMSIS_SVD/STM32H745_CM7.svd", // SVD file for CM7 core
"serverExtLoader": [
{
"loader": "${env:STM32CLT_PATH}/STM32CubeProgrammer/bin/ExternalLoader/MT25TL01G_STM32H745I-DISCO.stldr",
"initialize": true
}
],
"imagesAndSymbols": [
{
"imageFileName": "${workspaceFolder}/CM4/build/STM32H745I_DISCO_CM4.elf" // Loads the CM4.elf image
},
{
"imageFileName": "${workspaceFolder}/CM7/build/STM32H745I_DISCO_CM7.elf" // Loads the CM7.elf image
}
],
"verbose": false // Disables verbose logging
},
{
"name": "CM4_Debug",
"type": "stlinkgdbtarget",
"request": "launch",
"cwd": "${workspaceFolder}",
"runEntry": "main",
"deviceName": "STM32H745XIH3",
"deviceCore": "Cortex-M4",
"serverShared": true,
"serverApID": "3", // Specifies the Access Port ID for the CM4 core (core selection)
"serverPort": "61239", // Port for the GDB server to connect (must be unique if running multiple sessions)
"serverReset": "None", // No reset when starting this debug session
"svdPath": "${env:STM32CLT_PATH}/STMicroelectronics_CMSIS_SVD/STM32H745_CM4.svd", // SVD file for CM4 core
"imagesAndSymbols": [
{
"symbolFileName": "${workspaceFolder}/CM4/build/STM32H745I_DISCO_CM4.elf" // Loads the CM4.elf symbols
}
],
"verbose": false
}
],
"compounds": [ // Compound configurations allow (attempted) simultaneous debug sessions
{
"name": "DualCore_Debug",
"configurations": ["CM7_Debug", "CM4_Debug"] // List of configurations to launch together
}
]
}Can you please recommend any launch.json changes required to match the patches in 3.7.0?
Or otherwise let me know if it's an issue with the version update, it seems that Ln50 of the launch.json is the source of the issue, gdb no longer being okay with just a symbol file load.
Env:
OS: Win11 Pro
VSC: 1.108.0
STM32Cube VSC Ext: 3.7.0
- See attached vsc-stm32-proj-extensions.txt for relevant sub extension versions
Board: STM32H745I-DISCO
2026-01-08 11:50 PM
Update:
Removing the specific access point in the CM4 seems to fix the debugger stall issue for CM4 (i.e. comment out serverAPID) and allow dual core debugging. The CM4 debug log warning about no images being loaded seems to be a red herring, please advise if there is a way to suppress this (as it will always flag for H7 dual cores). The extension seems to crash on loading ELF images during the CM7 CubeProg run about 20% of the time but I can live with that.
2026-01-09 2:48 AM
Hi,
Same as you with the H7, but I just need to add the deviceCore attribute.
Be careful with the compound debug configuration because the launches are done simultaneously, not sequentially.
This can cause race conditions between the CM7 flashing the CM4 and the CM4 itself loading the symbols.
I saw on stackoverflow that some use a preLaunchTask on the second debug configuration to add a timer, but I’m not a fan of this solution.
BR,
Elliot
2026-01-11 8:05 PM
Thanks Elliot,
Yeah I've found the compound debug to be a bit hit and miss with the race-conditions, but have just re-cycled my launch if I hit an issue/ have been living with it. If the devs could recommend any particular improvements/recommendations to my dual-core launch workflow that would be epic.
@devs, would you be open to considering expanding the "Resources" section of the cube-code-doc module in the STM32Cube Bundles Manager VSC extension to include relevant STM32 knowledgebase links? Such as the h7 getting started KB article that seems fairly well maintained: How to debug STM32H7 dual-core using VS Code - STMicroelectronics Community
Cheers
MH