Joint Test Action Group (JTAG) is a IEEE Standard Test Access Port and Boundary-Scan Architecture. It describes communication standard used mainly for embedded devices for:
- debugging - reading internal system state in runtime
- firmware upgrades - re-programming of internal software
- boundary scan testing - alter internal interfaces directly to simulate system state that is hard to reproduce in normal scenarios
JTAG requires some additional connections to be present on board:
Is there a method we could use above ideas to improve higher level (let's say J2EE-based system) development? Read on!
Debugging
Debugging activities typically depend on external debugger that is attached to the running process. Using such approach you have detailed insight into running system with all important state exposed. However such approach is not always possible (checking production deployment for example.
If "thick" debugger is not available there's a poor man's alternative: application logs. Almost every modern logging library has the ability to switch logging level and enable / disable certain log categories. This way you can have detailed view of selected component (assuming you have added the logs to application in advance).