Linux – Tool to trace library calls in Linux/ARM

armdebugginglinuxshared librarytrace

I am searching for a tool that allows to trace calls to functions in shared libraries in Linux/ARM. Basically, I want to be able to specify a command line and let this tool produce a record of called library functions and the passed arguments. I imagine some form of function hooking could be used for this.

I am aware of ltrace, which provides exactly the functionality I require. However, ltrace does not work for me as it:

  • often segfaults when tracing more complex programs.
  • is very slow.

I am looking for a more robust alternative. Speed is nice, but not my main concern. Primarily, I would like to have a means of tracing library calls that can analyze any (non-evasive) program.

Sysdig is also not working in ARM, and the port of dtrace is still working in beta only in NetBSD.

Is anyone aware of such a tool in a usable state?

Best Answer

Have you looked at LTTng? It is a kernelspace/userspace tracing framework that works on several architectures, including ARM.

You can set up tracing for userspace code with LTTng-UST. But you'd have to recompile the shared libraries you want to trace, with your LTTng tracepoints added in.

Here is a guide from the official lttng docs on setting up userspace tracing: Tracing your own user application

I don't know if this would be helpful in your case, but there is also a Stack Overflow thread on compiling/installing lttng on embedded platforms (including ARM): How do I build and deploy LTTng to an embedded Linux system?

Related Question