Редактирование трассировки стека после инструментовки - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть javaagent, который выполняет некоторые инструменты кода.Это, конечно, изменяет трассировку стека для пользователя всякий раз, когда он выполняет:

new Exception().printStackTrace()

И это также влияет на другие службы, предоставляемые Throwable.class:

getStackDepth()
getStackElement(int i)

Etc ...

В некоторых случаях мои инструменты включают в себя добавление нового метода.У метода очень уникальный префикс, и я хотел бы игнорировать его, если это возможно.

Поддерживается ли это каким-либо образом JVMTI?

Или мне нужно использовать все способыв котором фактический разработчик Java, использующий агент, может получить stacktrace / stackelements / stackdepth / etc ...

1 Ответ

0 голосов
/ 14 сентября 2018

Прежде всего, какую Java вы используете?

Пожалуйста, проверьте эту документацию о ... StackTrace & GetMethodName

ипроверьте, можете ли вы использовать это, чтобы увидеть, возвращает ли getMethodName префикс, который вы используете

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