Let me start explaining my thought with a simple scenario
Lets say, I design an electrical circuit and I want to troubleshoot some part of my circuit. The obvious thing would be to go grab an oscilloscope to debug. I power up the circuit and see the waveform between any two points. The interesting thing to note here is that due to the physical properties of electrons, it is ok for us to have some load in parallel with the working circuit.
Is it possible to do something similar in computing? Can we extract data without impacting the program that is being run? The answer is "yes". I am aware of some techniques of achieving this.
- The first is to use a hardware trace to extract data from registers and memory.
- There is a project called dprobes, that does something similar to what I discuss here, but I am not sure of the exact implementation methodology.
I am wondering if there is any other mechanism of doing this using the existing resources on the system? This problem can be restated as -- Can be find ways and means of applying physical laws to software to solve some of our development and debugging issues?