Фирменный отладчик повторить действительно нереально просто по той причине, что для отладки используется специальная эмуляционная микросхема - фактически та же микросхема PSoC, только с добавленным отладочным интерфейсом, через который с ним общается отладочный блок, хранящий брек-пойнты, трассировочную информацию и т.п. С отлаживаемым устройством такая микросхема соединяется переходником под нужный тип корпуса. В обычных микросхемах такого отладочного интерфейса нет.
Для отладки можно использовать HyperTerminal, в окно которого выводить отладочные сообщения. Ну и я еще использую небольшой "мониторчик", который при нажатии на клавишу в терминале выводит текущее содержимое памяти и регистров. Поскольку при входе в прерывание регистры PC и F сохраняются в стеке - в прерывании от последовательного приемника их можно считать их из стека и передать в терминал. Там же можно вывести и регистры A и X. Значение регистра PC будет отображать адрес прерванной инструкции. По этому адресу в *.lst-файле, который формируется PSoCDesigner'ом, можно найти строку исходного текста, перед которой произошел переход в прерывание.
И еще один момент - в версии PSoC Designer 4.0 есть програмный эмулятор, активируется клавишами Ctrl-E в окне Project Settings -> закладка Debugger. Правда он медленный и эмулирует естественно только цифровую часть.