Eu estou tentando criar um perfil de um programa C simples com perf-events no debian 8 jessie. Eu posso ver símbolos, mas não consigo obter stacktraces. O mesmo procedimento gera bons rastreamentos de pilha no Ubuntu 16.04.
Eu instalei linux-image-amd64-dbg
e libc6-dbg
.
Confirmei que os parâmetros de configuração do kernel incluem CONFIG_KALLSYMS=y
Eu compilei o programa com gcc -g3 -O0 hello.c
para ativar os símbolos de depuração.
Eu começo a criar o perfil com o seguinte comando.
sudo perf record -g ./a.out
Eu gero um gráfico de chama com o seguinte comando
sudo perf script | ~/code/FlameGraph/stackcollapse-perf.pl | \
~/code/FlameGraph/flamegraph.pl > perf-kernel.svg
Esta é a listagem de hello.c que estou tentando criar um perfil
#include <stdio.h>
#include <unistd.h>
void do2() {
int fd = fileno(f);
char buf[100];
while(1) {
read(fd, buf, sizeof(buf)/sizeof(buf[0]));
}
}
int main(void)
{
do2();
return 0;
}
Este é o gráfico chama com debian jessie
Este é o gráfico de chama com o ubuntu
Por que os rastreios de pilha estão faltando no debian jessie?
Obrigado Sharath