Dynamic program analysis
From Wikipedia, the free encyclopedia
|
|
This article does not cite any references or sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. (February 2009) |
Dynamic program analysis is the analysis of computer software that is performed by executing programs built from that software system on a real or virtual processor. For dynamic program analysis to be effective, the target program must be executed with sufficient test inputs to produce interesting behavior. Use of software testing techniques such as code coverage helps ensure that an adequate slice of the program's set of possible behaviors has been observed. Also, care must be taken to minimize the effect that instrumentation has on the execution (including temporal properties) of the target program.
[edit] Examples of Tools
- Daikon is an implementation of dynamic invariant detection. Daikon runs a program, observes the values that the program computes, and then reports properties that were true over the observed executions, and thus likely true over all executions.
- Dmalloc, library for checking memory allocation and leaks. Software must be recompiled, and all files must include the special C header file dmalloc.h.
- DynInst is a runtime code-patching library that is useful in developing dynamic program analysis probes and applying them to compiled executables. Dyninst does not require source code or recompilation in general, however, non-stripped executables and executables with debugging symbols are easier to instrument.
- IBM Rational Purify: mainly memory corruption detection and memory leak detection.
- BoundsChecker: comparable to IBM's Purify.
- Valgrind runs programs on a virtual processor and can detect memory errors (e.g., misuse of malloc and free) and race conditions in multithread programs.
- VB Watch injects dynamic analysis code into Visual Basic programs to monitor their performance, call stack, execution trace, instantiated objects, variables and code coverage.
- Insure++ is runtime memory analysis and error detection tool. Its In use component provides a graphical view of memory allocations over time, with specific visibility into overall heap usage, block allocations, possible outstanding leaks, etc.
- jTracert is a Java agent which instruments applications running on the JVM and builds sequence diagrams.
- Intel Thread Checker is a runtime threading error analysis tool which can detect potential data races and deadlocks in multithreaded Windows or Linux applications.
- HP Security Suite is a suite of Tools at various stages of development. QAInspect and WebInspect are generally considered Dynamic Analysis Tools, while DevInspect is considered a static code analysis tool.
- Cenzic is a vendor product providing SaaS solutions for dynamic, black box testing of Web applications
- PolySpace statically checks dynamic properties (run-time errors and optionally user asserts) of C,C++ and Ada code
- OKTECH Profiler is a low-impact, sampling and instrumentation profiler for Java; allowing local and remote profiling and separate statistical analysis.
Most performance analysis tools use dynamic program analysis techniques.[citation needed]
[edit] Historical examples
- IBM OLIVER (CICS interactive test/debug): CICS application error detection including storage violations using an instruction Set Simulator to detect most CICS errors interactively
- SIMON (Batch Interactive test/debug) interactive batch program analyzer and test/debug using an instruction Set Simulator
- SIMMON: IBM internal instruction Set Simulator used for testing operating system components, utilities and I/O processors
[edit] See also
| This computer science article is a stub. You can help Wikipedia by expanding it. |