如何在命令中将 valgrind 输出(堆摘要)与我的程序输出一起重定向?
How can I redirect valgrind output (Heap summary) alongside my program's output in a command?
你好,我正在尝试 运行 对几个输入文件进行 valgrind 以查明我的程序中是否存在任何内存泄漏,并希望将程序输出与 valgrind 的堆摘要一起放入单独的文件中,我'感谢您的帮助
我尝试了 运行以下几行:
for i in {0..99}
do
valgrind --leak-check=full --leak-resolution=med --track-origins=yes --vgdb=no
./IndustrialTakeover<./tests/input/in${i}.txt>./tests/valgrind_check/program/output${i}.txt
done
但这不会将堆摘要输出提供到他们自己的文件中
然后我尝试了 运行ning :
for i in {0..99}
do
valgrind --log-file=./tests/valgrind_check/valgrind_message/output${i}.txt
--leak-check=full --leak-resolution=med --track-origins=yes --vgdb=no
./IndustrialTakeover<./tests/input/in${i}.txt>./tests/valgrind_check/program/output${i}.txt
done
但它也没有用,我收到了消息
valgrind: Use --help for more information.
--leak-check=full: command not found
valgrind: no program specified
,不胜感激!
此问题的解决方案是使用以下几行:
for i in {0..99} ;
do
valgrind valgrind --log-file=./tests/valgrind_check/valgrindmessage/output${i}.txt --leak-check=full --leak-resolution=med --track-origins=no --vgdb=no./IndustrialTakeover<./tests/input/in${i}.txt>./tests/valgrind_check/program/output${i}.txt ;
done
当然,您必须将 for 循环中的范围替换为您自己的应用,将路径替换为您自己的路径。
一种更 Valgrind-y 的方法是将 pid 合并到日志文件名中,如下所示:
for i in {0..99} ;
do
valgrind valgrind --log-file=./tests/valgrind_check/valgrindmessage/valgrind.%p.log --leak-check=full --leak-resolution=med --track-origins=no --vgdb=no ./IndustrialTakeover < ./tests/input/in${i}.txt > ./tests/valgrind_check/program/output${i}.txt ;
done
Valgrind 将用 pid 替换 %p。
如果您使用 --trace-children=yes
,这将特别有用,因为它还会为每个生成的进程生成一个日志。
你好,我正在尝试 运行 对几个输入文件进行 valgrind 以查明我的程序中是否存在任何内存泄漏,并希望将程序输出与 valgrind 的堆摘要一起放入单独的文件中,我'感谢您的帮助
我尝试了 运行以下几行:
for i in {0..99}
do
valgrind --leak-check=full --leak-resolution=med --track-origins=yes --vgdb=no
./IndustrialTakeover<./tests/input/in${i}.txt>./tests/valgrind_check/program/output${i}.txt
done
但这不会将堆摘要输出提供到他们自己的文件中
然后我尝试了 运行ning :
for i in {0..99}
do
valgrind --log-file=./tests/valgrind_check/valgrind_message/output${i}.txt
--leak-check=full --leak-resolution=med --track-origins=yes --vgdb=no
./IndustrialTakeover<./tests/input/in${i}.txt>./tests/valgrind_check/program/output${i}.txt
done
但它也没有用,我收到了消息
valgrind: Use --help for more information.
--leak-check=full: command not found
valgrind: no program specified
,不胜感激!
此问题的解决方案是使用以下几行:
for i in {0..99} ;
do
valgrind valgrind --log-file=./tests/valgrind_check/valgrindmessage/output${i}.txt --leak-check=full --leak-resolution=med --track-origins=no --vgdb=no./IndustrialTakeover<./tests/input/in${i}.txt>./tests/valgrind_check/program/output${i}.txt ;
done
当然,您必须将 for 循环中的范围替换为您自己的应用,将路径替换为您自己的路径。
一种更 Valgrind-y 的方法是将 pid 合并到日志文件名中,如下所示:
for i in {0..99} ;
do
valgrind valgrind --log-file=./tests/valgrind_check/valgrindmessage/valgrind.%p.log --leak-check=full --leak-resolution=med --track-origins=no --vgdb=no ./IndustrialTakeover < ./tests/input/in${i}.txt > ./tests/valgrind_check/program/output${i}.txt ;
done
Valgrind 将用 pid 替换 %p。
如果您使用 --trace-children=yes
,这将特别有用,因为它还会为每个生成的进程生成一个日志。