簡體   English   中英

Perf Tool Linux - 無呼叫圖

[英]Perf Tool Linux - No Call-Graph

我想使用perf version 3.0.8來配置我的嵌入式系統Linux kernel version 3.0.8

我使用zlib和elfutils交叉編譯工具/ perf。

為了熟悉這個工具,我使用了一個使用-g選項編譯的簡單快速排序示例。

我運行perf record -F 99 -g -- ./qsort (從示例中復制)然后執行perf report --stdio以查看我的個人資料結果。

這是perf report -g --stdio輸出的快照:

No kallsyms or vmlinux with build-id f41dfb5606beda1d75171db69f1e9466cb4868ba was found
[hi3518_dsu] with build id f41dfb5606beda1d75171db69f1e9466cb4868ba not found, continuing without symbols
No kallsyms or vmlinux with build-id a0f9a05faf6bcfb72282a03e048b47e8a8c0f2ec was found
[hi3518_tde] with build id a0f9a05faf6bcfb72282a03e048b47e8a8c0f2ec not found, continuing without symbols

# Events: 256  cpu-clock
    #
    # Overhead  Command      Shared Object                  Symbol
    # ........  .......  .................  ......................
    #
        96.88%    qsort  qsort              [.] partition
         0.78%    qsort  [kernel.kallsyms]  [k] __do_softirq
         0.39%    qsort  [kernel.kallsyms]  [k] __wake_up_sync_key
         0.39%    qsort  [kernel.kallsyms]  [k] get_page_from_freelist
         0.39%    qsort  [kernel.kallsyms]  [k] __memzero
         0.39%    qsort  [kernel.kallsyms]  [k] div_s64_rem
         0.39%    qsort  [hi3518_tde]       [k] 0x58
         0.39%    qsort  [hi3518_dsu]       [k] 0x8154

如您所見,根本沒有呼叫追蹤。 我真的很有興趣深入研究我的系統而沒有呼叫追蹤,這些結果毫無用處。

在編譯您嘗試分析的程序時,使用-fno-omit-frame-pointer標志可能會有一些運氣。 我也遇到了在ARM嵌入式系統上使用perf工作調用圖的問題。

我找到了解決方案。 運行perf --call-graph dwarf -- ./qsort確保已使用矮調試符號(-g,-ggdb或-gdwarf標志)編譯程序。 此外,您可能需要為系統上使用的任何庫安裝調試符號。 https://fedoraproject.org/wiki/StackTraces展示了如何為Fedora安裝調試符號包。

如果perf命令使用--call-graph dwarf失敗,除了elfutils之外,您可能還需要使用libunwind編譯perf。

可能我的pref版本真的很舊(或/和內核工具)。 我嘗試使用另一個soc(使用更新的內核和perf工具)並且callstack正常工作。 但是,即使沒有這個功能,我也可以使用這個工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM