lam*_*fun 6 linux profiling x86-64
如果没有它,SysProf 就无法正确生成调用堆栈,GProf 根本不准确。而且,不使用 -fno-omit-frame-pointer 的分析器是否与依赖它的分析器一样准确?
perf可以使用最新版本的 linux (带有--call-graph dwarf):
perf record -F99 --call-graph dwarf myapp
Run Code Online (Sandbox Code Playgroud)
它使用.eh_frames(或.debug_frames) 和 libunwind 来展开堆栈。
根据我的经验,有时它会迷路。
使用 Haswell 上最新版本的 perf+kernel,您也许可以将最后一个分支记录与--call-graph lbr.
据我所知,没有。使用帧指针,遍历堆栈是一个相当简单的练习。您只需取消引用帧指针即可找到旧的帧指针、堆栈指针和指令指针,然后重复直到完成为止。如果没有帧指针,您就无法在没有附加信息的情况下可靠地遍历堆栈,这在 ELF 平台上通常意味着 DWARF CFI。DWARF 解析起来相当复杂,并且需要您读取大量附加信息,这在分析器需要工作的时间限制下是很棘手的。
实现此目的的一种可行方法是简单地保存每个样本的堆栈内存,然后使用 CFI 使其离线以正确展开。根据堆栈的深度,这可能需要相当多的存储空间,并且复制可能会令人望而却步。我从未听说过使用此技术的分析器,但 Julian Seward将其作为 Firefox 内置分析器的潜在实施策略。
| 归档时间: |
|
| 查看次数: |
2982 次 |
| 最近记录: |