我在脚本中的程序上运行Valgrind的Helgrind工具。
这是脚本的相关部分: (我写的唯一一行是第一行)
sudo valgrind --tool=helgrind ./core-linux.bin --reset PO 2>> ../Test_CFE_SB/valgrindLog.txt &
PID=$!
printf "\n" >> ../Test_CFE_SB/valgrindLog.txt
sleep $sleepTime
#did it crash?
ps ax | grep $PID | grep -vc grep
RESULT=$?
if [ $RESULT -eq 0 ]
then
sudo kill $PID
echo "Process killed by buildscript."
else
echo $name >> crash.log
OS:32位XUbuntu 14.04
程序helgrind正在运行,core-linux.bin,不会像服务器一样自行关闭。运行直到获得kill命令。
在kill $ PID命令之后,程序会关闭,但Helgrind会在后台继续运行,占据CPU的94%左右。然后我必须使用kill -9杀死它,而valgrindLog.txt只包含来自Valgrind的起始消息,没有报告或任何内容。我已经让它以相同的结果度过了整个晚上,所以并不是说它只是很慢。
我运行完全相同的脚本,除了使用--tool = memcheck而且运行得非常好。 valgrindLog.txt包含应有的一切,一切都很好。如果我使用--tool = drd,那就好了。但是helgrind并不想打球,不幸的是我对Valgrind并不熟悉,至少到目前为止,我可以自己解决这个问题。
答案 0 :(得分:0)
要查看Valgrind / helgrind下您的应用程序正在执行的操作, 你可以使用gdb + vgdb附加,并检查你的程序是否进展 否则,它会被阻挡。
如果你不能附加,那就意味着Valgrind正在自己运行 代码,这可能是一个valgrind / helgrind错误。
如果您有一个小型复制器,请在valgrind bugzilla中提交错误