2017-08-01 107 views
4

我已經在小程序中使用Valgrind來檢查memorys leaks,它的工作很好。C++ - Valgrind on codeblocks(linux)

現在我有很多類和.cpp.h文件一個大計劃,我試圖用Valgrind檢查memory leak因爲我用了很多三分球,內存等

我使用linuxcodeblocks 16.01gcc,我想直接在codeblocks運行Valgrind但我得到了如下錯誤:

--------------- Application output -------------- 
valgrind: /myPathToTheProject/ValgrindOut.xml: No such file or directory 

如果我用只有012一個小項目測試文件和主要它的工作良好和Valgrind生成ValgrindOut.xml。在這個大項目中,我總是得到這個錯誤。有人有一些想法是什麼錯誤?或其他方式或工具來測試memory leak

編輯 - 運行Valgrind的

Leak summary: 

definitely lost: 673 bytes in 6 blocks. 
    indirectly lost: 89,128 bytes in 68 blocks. 
    possibly lost: 232 bytes in 2 blocks. 
    still reachable: 80,944 bytes in 6 blocks. 
     suppressed: 0 bytes in 0 blocks. 
+0

leak.txt請exaplain你究竟如何運行它,你在哪裏獲得這個錯誤? – VTT

+0

我直接在代碼塊中運行。頂部菜單欄 - > valgrind - >運行memcheck和錯誤出現在valgrind'console'輸出的代碼塊中 – RMRMaster

+0

你可以直接從linux shell運行嗎?這看起來像一個代碼鎖(不管它是什麼)問題。 – Serge

回答

0

後泄漏內容我不知道怎麼的valgrind直接從代碼塊運行。我建議你使用代碼塊來建立你的項目。在執行時,按照以下命令使用valgrind。

命令

valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --log-file=leak.txt ./myexecutable <my command line arguments> 


valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --log-file=leak.txt ./myexecutable -i 192.168.1.10 -p 5000 

這樣你就可以生成Valgrind的輸出文件,這是一個包含內存泄漏等

+0

謝謝。它真正幫助我。例如,它的意思是: 在1個塊中的112個字節間接丟失了損失記錄中的25個38? 我有很多消息非常相等。 – RMRMaster

+0

這些是內存泄漏。你已經分配了一些內存,但從未釋放。指向已分配內存的指針被修改/覆蓋,因此在程序執行期間永遠無法釋放它。由於我沒有源代碼,因此很難分辨出什麼是錯誤的。 – Kamal

+0

謝謝。我有一些內存泄漏的問題,因爲這(我的新帖) https://stackoverflow.com/questions/45441303/c-mysql-connector – RMRMaster