2017-09-16 2 views
2

debian 8 jessie에서 perf-events로 간단한 C 프로그램을 프로파일하려고합니다. 심볼을 볼 수는 있지만 스택 트레이스를 얻을 수 없습니다. 동일한 절차로 우분투 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

문제를 발견 할 수 있었다. 나는 데비안 8 커널 배송

를 규칙적 파괴하는이 활성화되어 있지 않습니다 CONFIG_FRAME_POINTER=y을 활성화하고 Brendan Gregg's perf site

그것은 불행한 따라 커널을 다시 컴파일했다

관련 문제