您好,我正在嘗試在幾個輸入檔案上運行 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
但這不會將堆摘要輸出提供到他們自己的檔案中
然后我嘗試運行:
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:使用 --help 獲取更多資訊。
--leak-check=full: 找不到命令
valgrind:沒有指定程式
,不勝感激!
uj5u.com熱心網友回復:
一種更符合 Valgrind 的方法是將 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因為它還會為每個生成的行程生成一個日志。
uj5u.com熱心網友回復:
這個問題的解決方案是使用以下幾行:
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回圈中的范圍,用你自己的應用程式替換路徑,用你自己的路徑替換路徑。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/471531.html
