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