นี่เป็นคำถามที่เก่า --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.
ฉันเชื่อว่านี่ต้องใช้เคอร์เนล Linux ที่ค่อนข้างใหม่ (> = 3.9 ใช่ไหมฉันไม่แน่ใจทั้งหมด) คุณสามารถตรวจสอบว่าแพ็คเกจ perf ของ distro ของคุณเชื่อมโยงกับ libdw หรือ libunwind ด้วยหรือreadelf -d $(which perf) | grep -e libdw -e libunwind
ไม่ ใน Fedora 20, perf เชื่อมโยงกับ libdw
perf record --call-graph dwarf
แก้ปัญหานี้ให้ฉัน โชคไม่ดีที่ดูเหมือนว่า perf มีปัญหาในการแสดงกราฟผู้โทร (เช่น "กลับ") เมื่อใช้ข้อมูลแคระ นั่นคือเหตุผลที่ฉันเริ่มใช้ FlameGraph เพื่อสร้างภาพ