Install Instructions

LiMiT Tools

Lock Monitor

Library Monitor

Video Demo


The LiMiT "LTrace" tool intercepts dynamic library calls specified by a list (at compile time) and records the number of events which occur during the calls and the number of calls.


Version 1 Limit_ltrace.tag.gz


First, specify the function signatures of the dynamic calls you want to intercept in the ltrace.list file. The included one has a bunch of common calls which you may or may not care about. Next, compile with make. This should produce "ltrace.so". Now, run your program with ltrace.so as a preload. You can specify the counter to use with the LT_CTR environment variable.


$ emacs ltrace.list
$ make
$ LT_CTR="0x0146" LD_PRELOAD=./ltrace.so my_application_to_monitor
<normal program output>
$ ls /tmp/ltrace/*.csv
$ ls /tmp/ltrace/<output file>

Technical Tricks Used

Function Interposition
Dynamic function interposition is really cool, so we use it. This is the best tutorial I've seen on it.

LiMiT Library Replacement
This tool doesn't use the LiMiT library provided on the Download page. That library is designed to be statically linked to the monitored executable, which influences the way the access code works, particularly with respect to the location of the overflow variable. We replace that code with slightly more generic though slightly slower code which works within a shared object.