Я написал простой агент:Метод Agent_OnLoad вызывается после завершения работы JVM
JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved) {
printf("Agent start");
}
и простой клиент:
public class Agent {
//java -agentpath:/path_to_lib Agent
public static void main(String[] args) throws InterruptedException {
System.out.println("Main");
}}
И если я запускаю программу, я буду видеть, ниже результат:
Главная
Начаток оператора
Почему метод main вызывается перед Agent_OnLoad?
Можете ли вы показать, как вы используете его в командной строке? Кроме того, добавьте новую строку в printf в Agent_OnLoad, чтобы буферы были сброшены. Интересно, вызывает ли это выходы вне очереди. Вы также можете объявить статическую переменную, указывающую на завершение работы Agent_OnLoad, и проверить ее в Agent_OnUnload. – blackpen