valgrindを使用したメモリリック、スレッドチェック


ValgrindはC/C++コードで使用できます.
Valgrindインストール
sudo apt install valgrind  # Ubuntu, Debian, etc.
sudo yum install valgrind  # RHEL, CentOS, Fedora, etc.
Valgrindの実行
行番号情報を取得するには、Debugモードで構築されたバイナリファイルを迂回する必要があります.
1.メモリリックの検証
Valgrendが提供するメモリチェッカー「memccheck」を使用します.
valgrind --leak-check=full \
         --show-reachable=yes \
         --track-origins=yes \
         --verbose \
         --log-file=valgrind-out.txt \
         ./executable exampleParam1
  • -leak-check=full : "each individual leak will be shown in detail"
  • -track-origins=yes:初期化されていない値をトレースします(メモリエラーに役立ちます).Valgrindが遅すぎると、このオプションはオフになります.
  • -verbose:vertiesモードで、プログラムの異常動作を報告します.
  • -log-file:ログファイルを作成します.terminalで役に立ちます.
  • 2.スレッドチェック
    Valgrindが提供するスレッドチェッカー「DRD」を使用します.
    valgrind --tool=drd \
    		 --verbose \
             ./executable exampleParam1
    Valgrind Report
    Valgrindを変換した結果は次のとおりです.
    HEAP SUMMARY:
        in use at exit: 0 bytes in 0 blocks
      total heap usage: 636 allocs, 636 frees, 25,393 bytes allocated
    
    All heap blocks were freed -- no leaks are possible
    
    ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
    ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
    出所https://stackoverflow.com/questions/5134891/how-do-i-use-valgrind-to-find-memory-leaks