We will describe in this section how this debugger server will be
implemented on RTEMS environment. Our initial target is based on Intel Pentium
and we will use an Ethernet link to communicate between the host and the target.
The RTEMS remote debugger will be composed by several tasks and exception
an initialization task which opens the sockets and runs the SUN RPC
server. This task will also connect the interrupt handlers and launch the communication
a communication task which receives the SUN RPC commands, executes
them and sends the result to the GDB client,
A debuggee event management task which waits for events. We need a different
task than the command management task in order to be able to still accept commands
while no event has yet occurred for the debuggee. An example could be a continue
command from GDB and then hitting to DEL key to see what is currently going
on on the target side because an expected breakpoint is not caught...
a debug exception handler which manages the hardware breakpoint and
single step exceptions (INT 1 on Intel x86),
a breakpoint exception handler which manages the software breakpoints
exceptions (INT 3 on Intel x86),
a default exception handler used to catch every possible errors make on the
Figure remote debugger tasks and handlers represents these
different tasks and handlers. The synchronization between the different task
and exception handlers will be described below in the section
Synchronization Among Tasks and Exception Handlers.
Some open issues we have faced for a prototype implementation are described
in the section Open Issues. The temporary workaround we chose are described
in chapter Workarounds for Open Issues in Prototype.