java printAssembly标志正在打印无汇编指令。

11 浏览
0 Comments

java printAssembly标志正在打印无汇编指令。

在这个 链接 中,rustyx提到他使用了一个调试虚拟机和以下标志-XX:+PrintOptoAssembly来获取他的Java字节码的汇编指令。

我使用以下命令安装了调试虚拟机:sudo apt-get install openjdk-17-dbg

我使用命令java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly Main

我习惯在C++中使用gdb来做这个,但是无法在Java中实现,printAssembly只打印指令的十六进制值,像下面的示例一样,多次重复出现,没有我的实际代码函数或任何有意义的符号。

0
0 Comments

问题:java printAssembly flag is printing no assembly instructions

原因:需要HotSpot反汇编器插件hsdis-amd64.so,并将其放置在共享库搜索路径上。

解决方法:可以从源代码构建该插件,也可以从预构建的二进制文件中获取。可以从这里获取预构建的二进制文件:https://bell-sw.com/pages/jvm-tools/ 或者https://chriswhocodes.com/hsdis/

0