2017-09-16 8 views
2

debian 8 jessieでperf-eventsを使って簡単なCプログラムをプロファイルしようとしています。私はシンボルを見ることができますが、スタックトレースを得ることができません。同じ手順で、ubuntu 16.04で良いスタックトレースが生成されます。perf-eventsがdebian 8のStackTracesを表示していませんjessie

linux-image-amd64-dbglibc6-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にないのですか?

おかげ シャラス

答えて

0

は、問題を見つけることができました。

PERF壊した、Debianの8とカーネルの出荷はこれが有効になっていないことを残念です Brendan Gregg's perf site

あたりとして、私はCONFIG_FRAME_POINTER=yを有効にしてカーネルを再コンパイルする必要がありました

関連する問題