アプリケーションの特定の実行で LLVM ビットコードの各命令が実行された回数を簡単かつ迅速に収集する方法が必要です。私が知る限り、私が取ることができるアプローチはいくつかあります。
PINを使用します。これには、DWARF デバッグ情報と命令デバッグ情報を使用して、バイナリ内の命令をビットコード内の命令にマップする必要があります。これがどれほど正確かは100%わかりません。
llvm-prof を使用します。ここで2つ質問です。まず、スタック オーバーフロー
opt
で呼び出されるオプションを見てきました--insert-edge-profiling
。しかし、そのオプションは 3.6 では利用できないようですか? 第 2 に、このようなプロファイリングでは、個々の命令レベルではなく、関数レベルでのみ実行回数が記録されるようです。あれは正しいですか?AddressSanitizerに似た新しいツールを作成します。これはうまくいくかもしれませんが、やり過ぎのようです。
私が見逃している私の目標を達成するためのより簡単な方法はありますか?