我正在尝试使用ASM来计算在单个函数中执行的单个字节码指令来构建直方图。我看到有一个工具ByCounter可以执行类似的任务 - 但我无法访问源代码。
我的理解是Java asm字节码库可以检测类,字段和方法,但是找不到用于检测单个字节码指令的示例(尽管来自ByCounter - 它是可能的)。
如果像JVMTI这样的工具更适合,那么这也是有用的信息!
感谢您的帮助!
答案 0 :(得分:0)
这是我Jawa所做的那种愚蠢的事情。例如:
from collections import Counter
from jawa.cf import ClassFile
import pandas
with open('tests/data/HelloWorldDebug.class', 'rb') as fin:
cf = ClassFile(fin)
method = cf.methods.find_one(name='<init>')
ins = Counter(i.mnemonic for i in method.code.disassemble())
df = pandas.DataFrame.from_dict(ins, orient='index')
fig = df.plot(kind='bar').get_figure()
fig.savefig('example.png')