Вообще все средства хороши вместе? каждое для своей задачи. Сам использую jtag для более быстрой проверки алгоритмов или сложных моментов (утечки памяти, watchpoint'ы и т.д.)
Терминальный вывод(пофиг в терминал jtaga(предпочтительней) или uart) - в дебаге, чтобы быстро проверить новыю сборку (все ли модули системы удачно загружены, все ресурсы найдены, порядок исполнения(если критичен) и т.д.) или вывести что-то сложное временное (аля синусоиду или еще какую функцию)
Диоды для дубляжа управления на критические узлы системы (цифровые выходы - включилось ли, каналы передачи данных и т.д.) - это реально больше помогает для наладчиков и подобного персонала(чтобы меньше грешили на код, а смотрели на сборку системы)