LTTng ne produit pas de recording

Le problème exposé dans ce sujet a été résolu.

Bonjour,

J’ai décidé de partir à la découverte de LTTng en utilisant la documentation. Seulement, ça ne c’est pas passé comme prévu.
Je tourne sous Fedora 37 Workstation :

$ uname -a
Linux <hostname> 6.1.18-200.fc37.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 11 16:09:14 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

J’ai tout d’abord essayé de compiler via les sources comme recommandé dans la documentation mais ça s’est vite terminé :

# make
make -C /lib/modules/6.1.18-200.fc37.x86_64/build M=/tmp/tmp.NApPgOVZw5/lttng-modules-2.13.9/src \
	CONFIG_LTTNG=m CONFIG_LTTNG_CLOCK_PLUGIN_TEST=m \
	KCPPFLAGS='' \
	modules
make[1]: *** /lib/modules/6.1.18-200.fc37.x86_64/build: No such file or directory.  Stop.
make: *** [Makefile:31: modules] Error 2

Je me suis donc rabattu sur la version dans les dépôts directement en installant les paquets lttng-tools, lttng-ust et lttng-ust-devel. Je n’ai pas réussi à utiliser la partie kernel de LTTng, il semblerait que pour ça il faille lttng-modules à construire depuis les sources…

J’ai ensuite fait la petite application hello, tout compile. La documentation indique ensuite :

List the available user space tracepoints:

$ lttng list --userspace

You see the hello_world:my_first_tracepoint tracepoint listed under the ./hello process.

$ lttng list --userspace
UST events:
-------------
None

Bon… Là je commence un peu à perdre espoir. Après avoir fait lancé le recording, exécuté mon programme et arrêté le recording, je ne vois aucun fichier à l’endroit indiqué… J’ai l’impression d’avoir loupé quelque chose mais je ne sais pas quoi :(

Comment configurer correctement LTTng sur Fedora 37 ?

Merci pour votre aide. :)

Merci pour ta réponse, j’avais déjà commencé à regarder de ce côté sans succès. Fedora a fait une mise à jour et visiblement une nouvelle version de /lib/modules est arrivé :

$ ls -l /lib/modules
total 0
drwxr-xr-x. 1 root root 752 Mar 20 20:08 6.0.7-301.fc37.x86_64
drwxr-xr-x. 1 root root 752 Mar 20 20:26 6.1.18-200.fc37.x86_64
drwxr-xr-x. 1 root root 752 Mar 23 17:44 6.2.7-200.fc37.x86_64

J’essaye de nouveau la commande :

make -C /lib/modules/6.2.7-200.fc37.x86_64/build M=/tmp/tmp.QtvfWgXdYD/lttng-modules-2.13.9/src \
	CONFIG_LTTNG=m CONFIG_LTTNG_CLOCK_PLUGIN_TEST=m \
	KCPPFLAGS='' \
	modules
make[1]: *** /lib/modules/6.2.7-200.fc37.x86_64/build: No such file or directory.  Stop.
make: *** [Makefile:31: modules] Error 2

Visiblement il utilise bien la dernière version. Dans cette dernière (et dans les autres également) le dossier build est un lien symbolique vers /usr/src/kernels/6.2.7-200.fc37.x86_64 qui n’existe pas. En effet, le dossier /usr/src/kernels est… vide.

Après avoir installé le paquet kernel-devel comme recommandé par la documentation, le dossier n’est plus vide et… ça compile ! Il va falloir que je me penche sur comment le kernel fonctionne.

Je plante à la commande make suivante :

At main.c:167:
- SSL error:FFFFFFFF80000002:system library::No such file or directory: crypto/bio/bss_file.c:67
- SSL error:10000080:BIO routines::no such file: crypto/bio/bss_file.c:75
sign-file: ./certs/signing_key.pem

J’ai vérifié et j’ai bien le paquet openssl-devel d’installé.

+0 -0

J’ai jamais eu de probleme à compiler lttng, mais en vrai lttng-tools, lttng-ust et lttng-ust-devel suffisent en général car ils sont pas mal à jour (tout du moins sur fedora).

Voilà ce que j’ai en suivant leur doc:

 amarok@atlas  ~/lttng-hello  vi hello-tp.h              
 amarok@atlas  ~/lttng-hello  vi hello-tp.c
 amarok@atlas  ~/lttng-hello  gcc -c -I. hello-tp.c
 amarok@atlas  ~/lttng-hello  vi hello.c   
 amarok@atlas  ~/lttng-hello  gcc -c hello.c
 amarok@atlas  ~/lttng-hello  gcc -o hello hello.o hello-tp.o -llttng-ust -ldl
 amarok@atlas  ~/lttng-hello  lttng list --userspace # NOTE: hello tourne dans un autre terminal
UST events:
-------------

PID: 353444 - Name: ./hello
      hello_world:my_first_tracepoint (loglevel: TRACE_DEBUG_LINE (13)) (type: tracepoint)

Note: quand tu executes lttng list --userspace il faut que ./hello tourne aussi au meme moment (dans un autre terminal), sinon la liste sera forcément vide. Par contre, pour tracer, meme pas besoin que ce soit actif. Exemple:

 amarok@atlas  ~/lttng-hello  lttng create my-user-space-session
Session my-user-space-session created.
Traces will be output to /home/amarok/lttng-traces/my-user-space-session-20230323-145920
 amarok@atlas  ~/lttng-hello  lttng enable-event --userspace hello_world:my_first_tracepoint
ust event hello_world:my_first_tracepoint created in channel channel0
 amarok@atlas  ~/lttng-hello  lttng start
Tracing started for session my-user-space-session
amarok@atlas  ~/lttng-hello  ./hello world and beyond
Hello, World!
Press Enter to continue...

Quitting now!
 amarok@atlas  ~/lttng-hello  lttng destroy
Destroying session my-user-space-session...
Session my-user-space-session destroyed
 amarok@atlas  ~/lttng-hello  babeltrace2 ~/lttng-traces/my-user-space-session-20230323-145920 
[14:59:39.178755903] (+?.?????????) atlas hello_world:my_first_tracepoint: { cpu_id = 0 }, { my_string_field = "hi there!", my_integer_field = 23 }
[14:59:39.178767906] (+0.000012003) atlas hello_world:my_first_tracepoint: { cpu_id = 0 }, { my_string_field = "./hello", my_integer_field = 0 }
[14:59:39.178768367] (+0.000000461) atlas hello_world:my_first_tracepoint: { cpu_id = 0 }, { my_string_field = "world", my_integer_field = 1 }
[14:59:39.178768657] (+0.000000290) atlas hello_world:my_first_tracepoint: { cpu_id = 0 }, { my_string_field = "and", my_integer_field = 2 }
[14:59:39.178768928] (+0.000000271) atlas hello_world:my_first_tracepoint: { cpu_id = 0 }, { my_string_field = "beyond", my_integer_field = 3 }
[14:59:39.178781581] (+0.000012653) atlas hello_world:my_first_tracepoint: { cpu_id = 0 }, { my_string_field = "i^2", my_integer_field = 16 }
+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte