我正在试图在debian 8 jessie上描述一个简单的C程序。 我可以看到符号,但我无法获取堆栈跟踪。 同样的过程在ubuntu 16.04上生成好的堆栈跟踪。
我已经安装了linux-image-amd64-dbg
和libc6-dbg
。 我已经确认内核configuration参数包括CONFIG_KALLSYMS=y
我用gcc -g3 -O0 hello.c
编译了程序来启用debugging符号。
我开始用下面的命令分析。 sudo perf record -g ./a.out
我用下面的命令生成一个火焰图
sudo perf script | ~/code/FlameGraph/stackcollapse-perf.pl | \ ~/code/FlameGraph/flamegraph.pl > perf-kernel.svg
这是hello.c的列表,我正在试图分析
#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; }
这是debian jessie的火焰图
这是Ubuntu的火焰图
为什么debian jessie中的堆栈跟踪丢失?
感谢Sharath