Любая программа имеет куда больший поток информации для отладки (и именно он интересен), чем пара внешних коммуникационных протоколов. А последние можно хоть хексдампом в общем потоке записать. Что выпечатывается: переходы между состояниями, полученные входные воздействия (внешние или от других программных модулей), выходные воздействия. Можно просто выпечатывать на входе в функцию и её аргументы, например. А если в ПО нет вменяемого логгера, то уровень ПО с моей точки зрения -- сомнительный. Простительно только для GUI-интерфейсов и маленьких (реально маленьких) поделок для МК (куда логгер не впихнуть).