WET Home |
This is the initial release of WET that is able to collect tracing information for a program execution. This release includes an optional "Diablo" component that can be used to collect dynamic control dependences as part of the tracing information if desired. Diablo can first be run on a target executable to record static control dependence information, which can later be used by the WET infrastructure to compute dynamic control dependence information. The second component of the release, "Valgrind", is required. Valgrind allows for dynamic binary instrumentation of an executing program and collection of the associated tracing information.
Diablo: [diablo.tar.gz, toolchain-i386-glibc.tar.bz2] (optional component)
This modified version of Diablo 0.3 is required only if control dependence information is desired when collecting tracing information.
Valgrind: [valgrind.tar.gz] (required component)
This modified version of Valgrind 2.2.0 is required by WET.
This release of WET includes a compression module that will compress the comprehensive tracing information produced by the tracing infrastructure, allowing it to be efficiently stored. Currently, the implementation requires that the comprehensive tracing information be first written to a file. Then, this uncompressed trace file is used to generate a set of corresponding compressed trace files. The original uncompressed trace file can then be discarded.
Compression component: [stream_compression.tar.gz]
Please refer to the included "readme.txt" file for information on how to use the compression component.
This release of WET includes a slicing module that will perform backward dynamic slicing on the uncompressed tracing information (the tracing information that is collected in WET v1.0). Given a specified instruction instance from which to start slicing, along with a collected trace information file, the backward dynamic slice is automatically computed and written to a text file for further analysis by users. The slices can be computed using either of the two available trace formats: the comprehensive tracing information format; or the dynamic dependences for a limited execution history format.
Slicing component: [slicing.tar.gz]
Please refer to the included "readme.txt" file for information on how to use the slicing component.
WET v1.2.1 [Online Slicing]:(available as of February 23, 2009)
This release of WET includes a slicing module that is integrated into Valgrind itself. Given a specified instruction instance from which to start slicing, Valgrind will collect the tracing information and then immediately compute the backward dynamic slice using the trace information that is stored in main memory. The slices can be computed using either of the two available trace formats: the comprehensive tracing information format; or the dynamic dependences for a limited execution history format.
Valgrind with slicing capability: [valgrind-1.2.1.tar.gz] * This replaces valgrind.tar.gz from WET v1.0
This version of Valgrind can be installed in the same way as previously described in the installation instructions. For instructions on using the online slicing capability, refer to the running instructions.WET v1.3 [Recording/Replaying]: (available as of July 8, 2010)
This release of WET includes a recording/replay function that allows the scheduling decisions of a multithreaded program execution to be faithfully replayed. Valgrind supports multithreaded programs by serializing the execution of each thread. However, scheduling decisions can be made differently in different executions of the same program using the same inputs. This can make it difficult to debug multithreaded programs, since many concurrency bugs such as data races highly depend on thread scheduling. To address this problem, the ability to record/replay a thread schedule has been incorporated into WET. During the recording mode, the scheduling decisions made by the Valgrind scheduler are dumped into a log file. During the replay mode, when a multithreaded program execution is replayed using this dump file, the same set of scheduling decisions are made as in the original execution.
This version of Valgrind can be installed in the same way as previously described in the installation instructions . For instructions on using the recording/replay capability, refer to the running instructoin.
Record/Replay component: [record_replay.tar.gz]
The included "test" folder provides three examples (hello_world, parallel_sum, pthread_example). Please refer to the README file in each example for information on how to use the record/replay component.