Профилирование Java-программы с помощью Valgrind
На самом деле, я работаю над проектом с несколькими языками ( Java, C, KornShell). Я должен проверить взаимодействие между Java и C, и я должен знать, какие функции вызываются в C и Java-программе одним и тем же инструментом. Для этого я написал сценарии KornShell и решил использовать Valgrind.
Но у меня проблема с Valgrind, у меня нет никаких следов профилирования Java. Поэтому я попытался создать простой класс Java и запустить его с помощью Valgrind. Но Valgrind не профилирует это.
Это простой класс Java, который я пытался профилировать
public class Test {
public Test(){}
public void helloworld(){
System.out.println("hello world");
}
public static void main(String arg[]){
Test t = new Test();
t.helloworld();
}
}
Вот как я запускаю свой класс Test
valgrind --tool=callgrind --trace-children=yes --callgrind-out-file=callgrind.test.out.%p --smc-check=all java Test
Вот вывод консольной valgrind:
== 52568 == Callgrind, профилировщик кэша, генерирующий граф вызовов
==52568== Copyright (C) 2002-2013, и GNU GPL'd, Josef Weidendorfer et al.
== 52568 == Использование Valgrind-3.10.1 и LibVEX; перезапустить с -h для получения информации об авторских правах
== 52568 == Команда: тест Java
== 52568 ==
== 52568 == Для интерактивного управления запустите callgrind_control -h.
Привет, мир
== 52568 ==
== 52568 == События: Ir
== 52568 == Собрано: 119570941
== 52568 ==
== 52568 == Я ссылаюсь на: 119 570 941
В файле callgrind.test.out.% P у меня должна быть трассировка функции helloworld, но у меня ее нет. Вы можете мне помочь? Можно ли даже профилировать Java как C с помощью Valgrind?