实际上,我正在开发一个包含多个语言(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();
}
}
以下是我如何运行我的课程测试
valgrind --tool=callgrind --trace-children=yes --callgrind-out-file=callgrind.test.out.%p --smc-check=all java Test
这是控制台valgrind输出:
== 52568 == Callgrind,一个生成缓存探查器的调用图
== 52568 ==版权所有(C)2002-2013,以及GNU GPL' d,Josef Weidendorfer等人
== 52568 ==使用Valgrind-3.10.1和LibVEX;用-h重新运行版权信息
== 52568 ==命令:java Test
== 52568 ==
== 52568 ==对于交互式控制,请运行' callgrind_control -h'。
你好世界
== 52568 ==
== 52568 ==事件:Ir
== 52568 ==收集:119570941
== 52568 ==
== 52568 ==我参考:119,570,941
在文件callgrind.test.out。%p中,我应该有一个helloworld函数的踪迹,但我没有。 你能帮助我吗 ?甚至可以用Valgrind来描述像C一样的Java吗?