I’m trying to debug the FreeRTOS_Plus_TCP_Echo_Qemu_MPS2 demo.
I compile it with the DEBUG=1 option that enables all debug related CFLAGS.
My host is a Kubuntu 22.04.
My IDE is VSCode.
I am using a Qemu, version 8.2.0 stable release, to run the demo.
(-machine mps2-an385 -cpu cortex-m3 -m 16M)
My issue is the following:
- I use a launch.json in VSCode to start debugging the freertos_tcp_mps2_demo.axf firmware binary
- A prelaunch task launches Qemu with root privileges (else it cannot modify /dev/tun/tuntap on my host Linux machine to create a bridge interface)
- That Qemu instance opens a GDB server (-s -S) and waits for VSCode to attach
- VSCode attaches a GDB instance for ARM to Qemu
- At this point the code should execute until it hits a breakpoint I’ve defined in the firmware’s code. However, Qemu just keeps executing it.
Any ideas on what could be wrong?
This is the launch.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Terminate All Tasks",
"command": "echo ${input:terminate}",
"type": "shell",
"problemMatcher": []
},
{
"label": "Run_QEMU",
"command": "sudo /home/xgandiaga/Desktop/qemu-8.2.0/build/qemu-system-arm -machine mps2-an385 -cpu cortex-m3 -m 16M -kernel /home/xgandiaga/Desktop/FreeRTOS/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Qemu_mps2/build/freertos_tcp_mps2_demo.axf -nic tap,id=mynet0,mac=52:54:00:12:34:AD,ifname=virbr0-nic,script=no -nographic -serial stdio -monitor null -semihosting-config enable=on,target=native -s -S",
"type": "shell",
"problemMatcher": []
}
],
"inputs": [
{
"id": "terminate",
"type": "command",
"command": "workbench.action.tasks.terminate",
"args": "terminateAll"
}
]
}
This is the tasks.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug MPS2 FreeRTOS on QEMU",
"type": "cppdbg",
"request": "launch",
"program": "/home/xgandiaga/Desktop/FreeRTOS/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Qemu_mps2/build/freertos_tcp_mps2_demo.axf",
"cwd": "/home/xgandiaga/Desktop/FreeRTOS",
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"miDebuggerPath": "/usr/bin/gdb-multiarch",
"miDebuggerServerAddress": "localhost:1234",
"stopAtEntry": true,
"preLaunchTask": "Run_QEMU",
"postDebugTask": "Terminate All Tasks",
}
]
}