debian 8 jessieでperf-eventsを使って簡単なCプログラムをプロファイルしようとしています。私はシンボルを見ることができますが、スタックトレースを得ることができません。同じ手順で、ubuntu 16.04で良いスタックトレースが生成されます。perf-eventsがdebian 8のStackTracesを表示していませんjessie
linux-image-amd64-dbg
とlibc6-dbg
をインストールしました。 カーネルコンフィグレーションのパラメータが含まれていることを確認しましたCONFIG_KALLSYMS=y
デバッグシンボルを有効にするためにgcc -g3 -O0 hello.c
というプログラムをコンパイルしました。
次のコマンドでプロファイリングを開始します。 sudo perf record -g ./a.out
私はこれは私が
#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をプロファイリングしようとしていますhello.cのためのリストで、次のコマンド
sudo perf script | ~/code/FlameGraph/stackcollapse-perf.pl | \
~/code/FlameGraph/flamegraph.pl > perf-kernel.svg
で難グラフFlame Graphを生成
なぜスタックトレースがdebian jessieにないのですか?
おかげ シャラス