Instrumenting C and other Native Programming Languages¶
We provide experimental C language support for Kieker. The current library supports all Kieker record types. In case you want to roll your own, you can use the C generator of the Kieker instrumentation record language (IRL).
Instrumentation with Compiler Hook¶
You can instrument C, C++ and Fortran application (or any other language supported by GCC) with the kieker-lang-pack-c. To enable instrumentation you have to specify -finstrument-functions as compiler option to instrument all functions, add libkieker to the library path and add -lkieker to the linker options.
To limit instrumentation you may use
More details can be found here: https://gcc.gnu.org/onlinedocs/gcc-4.4.4/gcc/Code-Gen-Options.html
Depending on the configure and make setup used in your C, C++, Fortran project your setup could look like this:
export LIBS=-lkieker export LDFLAGS=-L/my/directory/lib/ export CFLAGS=-finstrument-functions
Kieker supports two environment variables: - KIEKER_HOSTNAME - KIEKER_PORT which must be set to a port (default 5678) and a hostname (e.g. localhost) specifying the computer receiving the monitoring data.
Use the Kieker collector to receive the data. https://kieker-monitoring.readthedocs.io/en/latest/kieker-tools/Collector.html
There is initial code using aspectC++ for instrumentation. We have incorporated that code in the source tree. You may find the aspect definitions under libkieker/include/aspectc++. However, we have not yet tested them.
The Kieker language pack can be found here: https://github.com/kieker-monitoring/kieker-lang-pack-c
After checkout, you may have to perform the following four operations before you can compile the library and the sample programs.
In case you can compile and place the library in its default location type:
./configure ; make ; make install
In case you want to set a different installation location call configure with the option –prefix=/my/directory
See ./configure –help for details.
Example instrumented programs can be found in examples.
basic-example shows a manual instrumentation.