Memcheck によるメモリリークの検出
Valgrindのツールスイートに含まれるMemcheckツールを使用すると、アプリケーションのメモリ管理に関連する問題を検出できます。このツールはGDBデバッガと組み合わせて使用します。問題が検出されると、アプリケーションの実行が中断され、デバッグを行うことができます。
注: MemcheckはLinux上でローカルにインストールして実行できます 。また、任意のコンピュータからリモートホストやデバイス上で実行することも可能です。Windowsでは、Heobヒープオブザーバーを使用することで同様の結果を得ることができます。
Valgrind ツールをダウンロードしてインストールした後、Qt Creator から Memcheck を使用できます。
アプリケーションのメモリリークを検出するには:
- 「Projects 」モードに移動し、デバッグビルド構成を選択します。
- モードセレクターで、「Debug 」>「Memcheck 」を選択します。

- 「
」を選択してアプリケーションを起動します。 - アプリケーションを使用して分析を行います。
- 「
」を選択して、「Memory Issues 」で分析結果を表示します。
メモリの問題の確認
アプリケーションの実行中、Memcheck は以下の処理を行います。
- メモリのすべての読み取りおよび書き込みをチェックします。
- メモリの割り当てや解放、あるいはメモリブロックの作成や削除を行う呼び出しを傍受します。
Memcheck を停止すると、結果を確認できます。「Qt Creator 」は問題をカテゴリ別に分類し、実行中のアプリケーションに起因する問題のみを表示します。デフォルトでは、その他の問題(外部ライブラリに起因する問題など)は除外されます。
行を選択すると、メモリリークが発生した箇所と、その原因を示すスタックトレースを確認できます。
データを収集する代わりに、[
] を選択して、XML 形式の外部ログファイルを [Memcheck ] ビューに読み込むこともできます。
行の上にマウスを移動すると、その関数に関する詳細情報を表示できます。
行間を移動するには、[
] (Previous) または [
] (Next) を選択します。
Memcheck の使用方法の詳細については、Valgrind ドキュメントの「Memcheck の出力の解釈」を参照してください。
メモリの問題をフィルタリングする
結果をフィルタリングするには、[
] を選択し、ビューに表示する問題の種類を選択します:
- 明らかなメモリリークおよび可能性のあるメモリリーク
- 初期化されていないメモリの使用
- 無効な呼び出し
free() - サイズおよびアライメントのエラー
- ファイル記述子の問題
「Other 」を選択すると、どのカテゴリにも属さない問題が表示されます。
「External errors 」を選択すると、外部ライブラリからの問題も表示されます。
関連項目 : 手順: 関数実行の分析 とプロファイリング、外部アプリケーションでの Valgrind ツールの実行、プロジェクトに対する Valgrind 設定の指定、アナライザ、Valgrind Callgrind、Valgrind Memcheck、およびコードの分析。
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.