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.