Intel Software Development Emulator (SDE) is a very handy tool for dynamic program analysis. The binary version of the tool is available at https://software.intel.com/en-us/articles/intel-software-development-emulator
Once you untar the distribution you’ll find the sde
executable:
ilya@lin1:~/Tools/SDE$ tar -xvf sde-external-7.39.0-2016-01-18-lin.tar.bz2
ilya@lin1:~/Tools/SDE$ tar -xf sde-external-7.39.0-2016-01-18-lin.tar.bz2
ilya@lin1:~/Tools/SDE$ ln -s sde-external-7.39.0-2016-01-18-lin sde
ilya@lin1:~/Tools/SDE$ cd sde/
ilya@lin1:~/Tools/SDE/sde$ ls -l sde
-rwxr-xr-x 1 ilya ilya 52272 Jan 17 18:47 sde
But when you try to run it you might get a somewhat puzzling error message:
ilya@lin1:~/Tools/SDE/sde$ ./sde
bash: ./sde: No such file or directory
Of course there is the executable is there, the problem is that it’s a 32-binary
ilya@lin1:~/Tools/SDE/sde$ file sde
sde: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.4, not stripped
and we are trying to run in a 64-bit environment:
ilya@lin1:~/Tools/SDE/sde$ uname -a
Linux lin1 4.2.0-27-generic #32-Ubuntu SMP Fri Jan 22 04:49:08 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
To fix this problem we need to install 32-bit libraries:
ilya@lin1:~/Tools/SDE/sde$ sudo apt-get install lib32gcc1 libc6-i386 lib32z1 lib32stdc++6
Now we can make a simple SDE test run
ilya@lin1:~/Tools/SDE/sde$ ./sde -mix -- ls
ia32 LICENSE.txt README.txt sde64 src xed64
intel64 misc sde sde-mix-out.txt xed
This command generates file sde-mix-out.txt
with a histogram of basic blocks executed by ls
.