gdbserver and thread debugging

rasty1 wrote on Friday, July 15, 2016:

Hi,
Is someone aware about any port of gdbserver to FreeRTOS? Open source or commercial?
I’d like to do thread debugging via gdserver, not JTAG or OpenOCD.
Second question is target object file loader and symbol resolver for elf or similar format.
Is the something like that for FreeRTOS.

Best regards
Rasty

rtel wrote on Friday, July 15, 2016:

I think Segger and perhaps NXP have Eclipse plug-ins for FreeRTOS, which
presumably use GDB. Have a look at

https://mcuoneclipse.com/2016/05/18/freertos-thread-debugging-with-segger-gdb-in-eclipse/

rasty1 wrote on Friday, July 15, 2016:

Thanks.
But it is not what I’m looking for.

Few years ago OpenOCD started with parsing FreeRTOS TCB and stack and passing this data to GDB,
I tried to play with it, but gave up at the end. Maybe today it works out of the box.
It is really nice to see stack frames and tasks states, but I’d like to attach to a thread and debug it rather than stopping whole system. This would be a big advantage for complex applications.

I “discovered” FreeRTOS in 2007 for ARM7.
I took idea from VxWorks and wrote a primitive stack parser and added symbol table and lookup and was able to see thread call stack at the run time from embedded shell. This was very helpfull to debug dead-end loops and dead-locks.

dumarjo wrote on Friday, July 15, 2016:

Hi,

Which MCU do you use ? If it’s a cortex-M, it’s work well with openocd + gdb.

Jonathan

rasty1 wrote on Friday, July 15, 2016:

Hi,
Unfortunately for evaluation I use uBlaze.I push CortexM/R+FreeRTOS for the next product.
I’d love to use OpenOCD, but it does not support uBlaze, at least I didn’t find script.
What do you mean by “work well with openocd + gdb”? Shows all threads and stacks or supports also co-called “non-stop mode”, where you can stop and step-through specific thread?

Rasty

xz8987f wrote on Friday, July 15, 2016:

OpenOCD has it implemented (see https://mcuoneclipse.com/2016/04/09/freertos-thread-debugging-with-eclipse-and-openocd/), but I have not used much openOCD as it does not support the ARM cores I’m using well. But you might have a look at the OpenOCD implementation as it is open source.

rasty1 wrote on Friday, July 15, 2016:

Thanks I’ll try that.