JTAG can be used to single-step and debug loaded RAM applications, or even applications resident in ROM. If JTAG is supported by your target, please refer to the documentation describing the target as you will need to configure your JTAG debugger appropriately. Certain targets may also need to specify a JTAG startup type in the eCos configuration. Again, refer to the target specific documentation.
Many JTAG debuggers provide a GDB server to which you may connect GDB to download, run and debug your application. This is typically done over ethernet so refer to the Section called Connecting Via Ethernet for instructions on how to debug over ethernet and replace <hostname> with the name or IP address of the JTAG debugger, and <port> with the port number typically associated with your JTAG debugger. For example, for the Ronetix PEEDI the port number is normally 2000, while for the Abatron BDI3000 the port number is normally 2001.
Debugging of ROM applications is sometimes only possible if using hardware breakpoints, and some hardware may only support a very limited number of hardware breakpoints so they should be used sparingly. Check the target documentation to see if your target falls into this category. If so and you use a GDB front-end such as Eclipse, check it has not set unnecessary extra breakpoints. Some JTAG devices give the option of whether to set hardware or software breakpoints by default. Be sure to configure your device appropriately.