Dynamic analysis extracts information about programs by executing them on a real or virtual processor.
Dynamic analysis is a method for extracting information about programs or the data they process, by collecting critical data during program execution. This can overcome the problem of a static analysis, which is often too conservative ("some event E might occur"), by providing evidence that some specific events (e.g., E) did occur.
A first issue is deciding what information to collect.
A difficult issue is how to insert data-collecting probes into the runtime code:
- hide the instrumentation in runtime libraries or OS used by the program
- patch the object code
- trap code pages of interest and simulate the critical part
- simulate the entire program execution and collect data as needed
- modify the source code to insert the instrumentation
Another issue is whether the data collection process interferes with program execution; this is especially important for programs with real time constraints.