J'essaie de profiler un simple programme C avec perf-events sur debian 8 jessie. Je peux voir des symboles, mais je suis incapable d'obtenir des piles de pile. La même procédure génère de bonnes stacktraces sur Ubuntu 16.04.perf-events ne montre pas StackTraces sur debian 8 jessie
J'ai installé linux-image-amd64-dbg
et libc6-dbg
. J'ai confirmé que les paramètres de configuration du noyau incluent CONFIG_KALLSYMS=y
J'ai compilé le programme avec gcc -g3 -O0 hello.c
pour activer les symboles de débogage.
Je commence le profilage avec la commande suivante. sudo perf record -g ./a.out
je produis un graphique de la flamme Flame Graph avec la commande suivante
sudo perf script | ~/code/FlameGraph/stackcollapse-perf.pl | \
~/code/FlameGraph/flamegraph.pl > perf-kernel.svg
Voici la liste des hello.c que je suis en train de profil
#include <stdio.h>
#include <unistd.h>
void do2() {
FILE* f = fopen("/dev/zero", "r");
int fd = fileno(f);
char buf[100];
while(1) {
read(fd, buf, sizeof(buf)/sizeof(buf[0]));
}
}
int main(void)
{
do2();
return 0;
}
This is the flame graph with debian jessie
This is the flame graph with ubuntu
Pourquoi les traces de pile sont-elles manquantes dans Debian Jessie?
Merci Sharath