我想要一种简单而快速的方法来收集LLVM 位码中的每条指令在应用程序的给定运行中执行的次数。据我所知,我可以采取多种方法:
使用密码。这需要使用 DWARF 调试信息和指令调试信息来尝试将二进制中的指令映射到位码中的指令;不是 100% 确定这将是多么准确。
使用 llvm-prof。这里有两个问题。首先,我在Stack Overflow上看到了
opt
调用--insert-edge-profiling
. 但是,该选项似乎在 3.6 中不可用?其次,这种分析似乎只记录功能级别的执行计数,而不是单个指令级别的执行计数。那是对的吗?编写一个类似于AddressSanitizer的新工具。这可能有效,但似乎有点矫枉过正。
有没有更简单的方法来实现我所缺少的目标?