Например как это делается в Algorithm Builder. Т.е. я ставлю в коде точки останова, программа в них останавливается и я мого просматривать содержимое регистров, памяти программ и данных, а также еепром.
А софт самостоятельно добавляет программу монитор в прошивку благодаря которой я это и могу делать. А на место точек останова встают вызовы программы монитора. В отличие от JTAG используются минимум ног.