Jvm 如何使用HotSpot服务性代理检查jitted方法的局部变量\参数?

Jvm 如何使用HotSpot服务性代理检查jitted方法的局部变量\参数?,jvm,jit,jvm-hotspot,Jvm,Jit,Jvm Hotspot,我找到了一篇关于如何使用otSpot服务性代理检查变量值的好文章,但是我仍然有疑问 局部变量信息对于解释的方法是可靠的,但对于编译的方法并不总是可靠的。但是,编译的方法将有一个带有代码地址的额外行,因此您可以在gdb中反汇编和检查它 那么,为什么这种检查局部变量信息的方法对于编译方法并不总是可靠的呢?我怎么知道这种不可靠的情况是否会发生?如果出现这种情况,我将如何在gdb中为Java jitted方法反汇编和检查它 据我所知,GDB只能显示本机C/C++方法。如果有一个示例演示如何在发生不可靠

我找到了一篇关于如何使用otSpot服务性代理检查变量值的好文章,但是我仍然有疑问

局部变量信息对于解释的方法是可靠的,但对于编译的方法并不总是可靠的。但是,编译的方法将有一个带有代码地址的额外行,因此您可以在gdb中反汇编和检查它

那么,为什么这种检查局部变量信息的方法对于编译方法并不总是可靠的呢?我怎么知道这种不可靠的情况是否会发生?如果出现这种情况,我将如何在gdb中为Java jitted方法反汇编和检查它


据我所知,GDB只能显示本机C/C++方法。如果有一个示例演示如何在发生不可靠情况时,通过在gdb中对Java jitted方法进行反汇编和检查来检查局部变量信息,那将是一个非常好的例子。

链接的问题包含代码,您是否尝试过/查看过它?如果是这样的话,你走了多远/你被困在哪里了?当然,正如链接的问题所提到的,它对于编译的方法并不总是可靠的,我想知道的是为什么它对于编译的方法并不总是可靠的?我想那是因为JVM只保存信息,以便在某些指令点进行去优化。中间的指令可能包含未知的中间值感谢您的响应,因此如果发生这种不可靠的情况,如何通过gdb在Java方法中反汇编和检查变量?不要。如果必须调试特定方法,请尝试将其从编译中排除。