检测后编辑堆栈跟踪



我有一个执行一些代码检测的javaagent。 当然,每当用户执行以下操作时,这都会更改用户的堆栈跟踪:

new Exception().printStackTrace()

它还会影响其他服务 Throwable.class提供:

getStackDepth()
getStackElement(int i)

等。。。

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

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

或者我是否需要检测使用代理的实际 Java 开发人员可以获得堆栈跟踪/堆栈元素/堆栈深度/等的所有方式......

首先,你使用的是哪个Java?

请检查有关... 堆栈跟踪 & 获取方法名称

并检查是否可以使用它来查看 getMethodName 是否返回您使用的前缀

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

相关内容

  • 没有找到相关文章

最新更新