por Harish G Patil,
Publicado:02/07/2013 Última atualização:02/07/2018
This toolkit is called Program Record/Replay Toolkit.
The current version is 3.11 and was uploaded on Dec 17, 2019. [md5sum 8feadae0057985b1b77a624588d30c35]
Program Record/Replay Toolkit is built upon the Pin dynamic binary instrumentation system. It is a re-distribution of the latest/reasonably recent Pin kit for Linux with some additions for making Pin-based analyses repeatable. The additions include a library and a header file that provide an API for making Pintools enabled for recording a program execution and doing analysis while replaying a program recording. Also included in the toolkit are example Pintools that are record/replay enabled and a number of scripts for recording, replaying, and doing replay-based analysis for finding and check-pointing representative regions ("PinPoints") of large applications. Scripts/tools for Deterministic Replay based Debugging ("DrDebug") are also included in this toolkit.
PinPlay has been integrated with the Maple tool for exposing multi-threaded bugs. The Sniper simulator project also uses PinPlay.
PinPlay recorder and replayer for Windows*/macOS*/Linux* are now integrated (binary form) with Intel® Software Development Emulator (Intel® SDE).
Intel is releasing this toolkit so that developers can experiment with making their Pin-based analysis repeatable.
Version 3.11 based on pin-3.11-97998-g7ecce2dac-gcc-linux from http://www.pintool.org.
What's new:
Multiple bug-fixes and security updates.
Set your PIN_ROOT variable to point to that directory. You can also refer to the tools in the kit using full or relative paths. Do not rearrange the files or subdirectories in the unpacked kit. If you want to move the kit directory, move everything.
No installation is normally needed as pre-built tools are already included in the kit. If the pre-installed tools do not work for you, do the following:
Prerequisites: Installation will only work on 64-bit Linux machines with gcc/g++ installed for both 32-bit and 64-bit compiles.
cd $PIN_ROOT/extras/pinplay/examples
make instclean
make
Prerequisite:
Pintool source changes: ( Please look at $PIN_ROOT/extras/pinplay/examples/pinplay-driver.cpp for reference.)
#include "pinplay.H"
PINPLAY_ENGINE pinplay_engine;
KNOB<BOOL> KnobPinPlayLogger(KNOB_MODE_WRITEONCE,
"pintool", "log", "0",
"Activate the pinplay logger");
KNOB<BOOL> KnobPinPlayReplayer(KNOB_MODE_WRITEONCE,
"pintool", "replay", "0",
"Activate the pinplay replayer");
main()
{
..
pinplay_engine.Activate(argc, argv,
KnobPinPlayLogger, KnobPinPlayReplayer);
..
}
Makefile changes: (Please look at $PIN_ROOT/extras/pinplay/examples/makefile.rules for reference.)
PINPLAY_HOME=$(PIN_ROOT)/extras/pinplay/
PINPLAY_INCLUDE_HOME=$(PINPLAY_HOME)/include
PINPLAY_LIB_HOME=$(PINPLAY_HOME)/lib/$(TARGET)
EXT_LIB_HOME=$(PINPLAY_HOME)/lib-ext/$(TARGET)
CXXFLAGS += -I$(PINPLAY_INCLUDE_HOME)
linking: link in $(PINPLAY_LIB_HOME)/libpinplay.a,
$(EXT_LIB_HOME)/libbz2.a, $(EXT_LIB_HOME)/libz.a
$(CONTROLLERLIB)
Link in these libraries before Pin libraries.
Pintool run command changes:
pintool + pinplay logger:
-------------------------
% pin -t your-tool.so -log -log:basename pinball/foo -- test-app
pintool + pinplay replayer:
---------------------------
% pin -xyzzy -reserve_memory pinball/foo.address -t your-tool.so
-replay -replay:basename pinball/foo -- $PIN_ROOT/extrans/pinplay/bin/intel64/nullapp
[for intel64 pinballs]
% pin -xyzzy -reserve_memory pinball/foo.address -t your-tool.so
-replay -replay:basename pinball/foo -- $PIN_ROOT/extrans/pinplay/bin/ia32/nullapp
[for ia32 pinballs]
Please check all the Pin known issues in Pin documentation, they apply to PinPlay as well. In addition, the following are the currently known PinPlay issues:
O desempenho varia de acordo com o uso, a configuração e outros fatores. Saiba mais em https://edc.intel.com/content/www/br/pt/products/performance/benchmarks/overview/.