The Ravenscar Profile is a subset of the Ada tasking features, specifically designed for systems with safety-critical real-time requirements.
set ravenscar task-switching on
Allows task switching when debugging a program that uses the Ravenscar Profile. This is the default.
set ravenscar task-switching off
Turn off task switching when debugging a program that uses the Ravenscar Profile. This is mostly intended to disable the code that adds support for the Ravenscar Profile, in case a bug in either GDB or in the Ravenscar runtime is preventing GDB from working properly. To be effective, this command should be run before the program is started.
show ravenscar task-switching
Show whether it is possible to switch from task to task in a program using the Ravenscar Profile.
When Ravenscar task-switching is enabled, Ravenscar tasks are announced by GDB as if they were threads:
(gdb) continue [New Ravenscar Thread 0x2b8f0]
Both Ravenscar tasks and the underlying CPU threads will show up in
the output of
(gdb) info threads Id Target Id Frame 1 Thread 1 (CPU#0 [running]) simple () at simple.adb:10 2 Thread 2 (CPU#1 [running]) 0x0000000000003d34 in __gnat_initialize_cpu_devices () 3 Thread 3 (CPU#2 [running]) 0x0000000000003d28 in __gnat_initialize_cpu_devices () 4 Thread 4 (CPU#3 [halted ]) 0x000000000000c6ec in system.task_primitives.operations.idle () * 5 Ravenscar Thread 0x2b8f0 simple () at simple.adb:10 6 Ravenscar Thread 0x2f150 0x000000000000c6ec in system.task_primitives.operations.idle ()
One known limitation of the Ravenscar support in GDB is that
it isn’t currently possible to single-step through the runtime
initialization sequence. If you need to debug this code, you should
set ravenscar task-switching off.