이것은 오래된 질문이지만 지금은 가능합니다 --call-graph dwarf
. 매뉴얼 페이지에서 :
-g
Enables call-graph (stack chain/backtrace) recording.
--call-graph
Setup and enable call-graph (stack chain/backtrace) recording, implies -g.
Allows specifying "fp" (frame pointer) or "dwarf"
(DWARF's CFI - Call Frame Information) as the method to collect
the information used to show the call graphs.
In some systems, where binaries are build with gcc
--fomit-frame-pointer, using the "fp" method will produce bogus
call graphs, using "dwarf", if available (perf tools linked to
the libunwind library) should be used instead.
나는 이것이 다소 최근의 리눅스 커널을 필요로한다고 생각한다 (> = 3.9? 나는 확실하지 않다). 배포판의 perf 패키지가 libdw 또는 libunwind와 연결되어 있는지 확인할 수 있습니다 readelf -d $(which perf) | grep -e libdw -e libunwind
. Fedora 20에서 perf는 libdw와 연결되어 있습니다.
perf record --call-graph dwarf
나를 위해이 문제를 해결합니다. 불행히도, 왜소한 정보를 사용할 때 perf는 호출자 기반 (즉, "반전 된") 호출 그래프를 표시하는 데 문제가있는 것 같습니다. 그렇기 때문에 시각화를 위해 FlameGraph를 사용하기 시작했습니다.