- A resource tracing, debugging and profiling tool
- Restracer@github
Crossplatform method to trace software errors in runtime during resource manipulation is shown. A scheme for describing abstract resources and their functions in XML is presented. Due to separation it's possible to describe vast classes of resources without changing the analyzer core. Detected errors often have an influence on security, safety, robustness and resource optimal usage.
Language | Status |
---|---|
C | β |
C++ | π§ |
others | possible |
Method | Status |
---|---|
POSIX threads | β |
fork() | π§ |
Windows threads | possible |
execution model | Status |
---|---|
Userspace | β |
Kernel | possible |
Embedded | possible |
OS | Status |
---|---|
GNU/Linux |
β |
FreeBSD |
β |
Solaris |
possible |
MacOS |
possible |
Windows |
possible |
Arch | Status |
---|---|
IA32 (x86 /x64 ) |
β |
IA64 |
possible |
other 64bit | possible |
other 32bit | possible |
other 16bit | possible |
other 8bit | possible |
GNU Make
BSD Make
Environtment | BuildTool GNU Make |
BuildTool BSD Make |
---|---|---|
GNU/Linux |
make |
|
FreeBSD |
gmake |
make |
sudo sh -c 'echo 92.63.64.5 skylark.tsu.ru >> /etc/hosts'
export GPG_KEY=B0414424; export DISTRO_TARBALL_NAME=restracer-current-linux-amd64.tar.xz; export DISTRO_TARBALL_ASC_NAME=$DISTRO_TARBALL_NAME.asc
gpg --keyserver hkp://pgp.mit.edu --recv-keys $GPG_KEY || gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys $GPG_KEY || gpg --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys $GPG_KEY
wget http://skylark.tsu.ru/art/master/$DISTRO_TARBALL_NAME
wget http://skylark.tsu.ru/art/master/$DISTRO_TARBALL_ASC_NAME
gpg --verify $DISTRO_TARBALL_ASC_NAME
sudo tar xf $DISTRO_TARBALL_NAME -C /usr --skip-old-files
git clone https://github.com/larkvirtual/restracer.git
cd restracer
cat DEPENDS.txt
make -j$(nproc)
sudo make install
git clone https://github.com/larkvirtual/restracer.git
cd restracer
cat DEPENDS.txt
make -j$(nproc)
DESTDIR=usr-local make install
- System-wide: no extra commands needed
- User-only:
export PATH=$PATH:PATH-TO-RESTRACER/usr-local/bin; export RT_ROOT=PATH-TO-RESTRACER/usr-local
cd src
- Put
art_start("myApp;autostart;");
call is a first function inside yourmain()
GNU Make@GNU/Linux:
rt-make
GNU Make@FreeBSD:
rt-gmake
BSD Make@FreeBSD:
rt-make
restracer ./myApp
- Analyzer (
artrepgen
) can run on some remote location, outside of traced program / container
- Less easy to debug restracer itself
- Network throughput performance may be primary importance
Tracefile method (traced application writes to tracefile, then finishes noramally or not, then passing tracefile to analyzer)
cd src
- Put
art_start("");
call is a first function inside yourmain()
GNU Make@GNU/Linux:
RT_TEMPLATE=posix-gcc-mt-file-lint rt-make
GNU Make@FreeBSD:
RT_TEMPLATE=posix-gcc-mt-file-lint rt-gmake
BSD Make@FreeBSD:
RT_TEMPLATE=posix-gcc-mt-file-lint rt-make
restracer ./myApp
artrepgen --file tracefile.out
- More easy to debug restracer itself
- Less tricky to run Analyzer (
artrepgen
)
- Can consume lots of diskspace
Gentoo (WILL ERASE /usr/lib64/
: libffi.so.6
, libglibmm-2.4.so.1
, libgobject-2.0.so.0
, libsigc-2.0.so.0
, libglib-2.0.so.0
, libgmodule-2.0.so.0
, libpcre.so.3
, libxml++-2.6.so.2
. DO NOT EXECUTE IF UNSURE
export GPG_KEY=B0414424; export DISTRO_TARBALL_NAME=restracer-current-linux-amd64.tar.xz; export DISTRO_TARBALL_ASC_NAME=$DISTRO_TARBALL_NAME.asc
gpg --delete-keys --yes $GPG_KEY
cd /usr; tar tf PATH-TO/restracer-current-linux-amd64.tar.xz | xargs rm -f
rm -rf /usr/local/lib/restracer/
rm -f $DISTRO_TARBALL_ASC_NAME $DISTRO_TARBALL_NAME
cd restracer
sudo make uninstall
cd ..
rm -rf restracer
rm -rf restracer