Java 插装后编辑堆栈跟踪

Java 插装后编辑堆栈跟踪,java,jvmti,Java,Jvmti,我有一个javaagent,它执行一些代码插装。 这当然会更改用户的堆栈跟踪,只要用户执行以下操作: new Exception().printStackTrace() 它还影响其他可丢弃的服务。class提供: getStackDepth() getStackElement(int i) 等等 我的工具涉及在某些情况下添加新方法。这个方法有一个非常独特的前缀,如果可能的话,我想忽略它 JVMTI是否以任何方式支持这一点 或者我需要为使用代理的实际java开发人员获取stacktrace/s

我有一个javaagent,它执行一些代码插装。 这当然会更改用户的堆栈跟踪,只要用户执行以下操作:

new Exception().printStackTrace()
它还影响其他可丢弃的服务。class提供:

getStackDepth()
getStackElement(int i)
等等

我的工具涉及在某些情况下添加新方法。这个方法有一个非常独特的前缀,如果可能的话,我想忽略它

JVMTI是否以任何方式支持这一点


或者我需要为使用代理的实际java开发人员获取stacktrace/stackelements/stackdepth/等的所有方式提供工具吗?

首先,您使用的是哪种java

请检查有关…的文档。。。 &

并检查是否可以使用该方法查看getMethodName是否返回您使用的前缀

char * request = (*jvmti)->GetMethodName
    if (strstr(request, "PREFIX") != NULL) {
        // contains
    }

爪哇8。对它确实使用了前缀。