ヒーブ
Heobを使ってメモリリークを検出する。
Heob の設定を指定するには、Analyze >Heob に進みます。

Extra arguments で、Heob を実行するための追加引数を入力します。Heob コンソールで利用可能な引数をリストするには、このフィールドに-H と入力し、Enter を選択します。
例えば、リークデータを HTML ファイルに記録するには-oleaks.html オプションを使用します。このオプションと共に、-g2 オプションを使用してファイル内のリークを視覚的にグループ化し、-L1024 オプションを使用してファイル内に最大 1024 バイトのリークコンテンツを記録できます。例えば-oleaks.html -g2 -L1024
変更内容をデフォルト設定として保存するには、
を選択します。
カスタマイズした設定プロファイルを削除するには、プロファイルを選択し、Delete を選択します。
以下のセクションでは、使用可能なオプションの詳細について説明します。
結果の記録
チェックの結果はMemcheck ビューに表示され、ファイルに記録されます。ファイル名はXML output file で指定します。 Heob は、プロジェクト・ディレクトリにファイルを作成します。
ファイル名の変数としてプロセス識別子(PID)を使うことができます。例えば、leaks-%p.xml 。これで子プロセスにもHeobが注入されます。
その他の変数として、親 PID に%P を、アプリケーション名に%n を使用できます。
変数を使用した場合、Qt Creator は自動的にファイルを開くことはできませんが、プロジェクト・ディレクトリから開くことはできます。
例外の処理
Handle exceptions でOff を選択すると、標準の例外ハンドラが使用され、アプリケーショ ンがクラッシュしたときにデバッガが自動的にアタッチされます。これは、[環境設定] > [Debugger ] > [General ] > [デバッガ] を選択して、Qt Creator を死後デバッガとして登録した場合にのみ機能します。 Use Qt Creator for post-mortem debugging.
クラッシュの理由と場所をチェックし、バッファ・オーバーランが原因かどうかを検出する Heob 例外ハンドラを使用するには、On を選択します。
例外ハンドラをインストールする以外のすべての Heob 関数を無効にするには、Only を選択します。アプリケーションがクラッシュした場合、クラッシュのスタックトレースのみが表示されます。したがって、このオプションは、Heob をコンソールで使用したり、子プロセスでも実行したりする場合にほとんど役立ちます。
エラー時に例外を発生させる
アプリケーションの実行時にエラーを表示するには、Raise breakpoint exception on error チェックボックスを選択します。
このオプションを無効にすると、二重解放、無効なポインタの解放、メモリ不足などのエラーは、収集されたすべてのデータを結果ファイルに書き込むだけで、アプリケーションの実行終了時にのみ表示されます。
このオプションを有効にすると、アプリケーションはエラー位置で停止します。これはデバッガ下でHeobを実行するRun with debugger オプションと併用すると便利です。
ページの保護
Page protection で、標準的なメモリ割り当て関数を使用し、メモリリーク検出のみを有効にするにはOff を選択します。
After を選択すると、割り当てられた各ブロックの末尾に保護ページが配置され、 アクセスされると例外がスローされます。Before を選択すると、各割り当てブロックの前に保護ページが配置されます。こ れ ら のオプシ ョ ンは メ モ リ を消費 し 、 検査の速度を低下 さ せ る ので、 64 ビ ッ ト プ ロ グ ラ ムま たは短時間実行のプ ロ グ ラ ムに対 し てのみ推奨 し ます。
Freed memory protection を選択すると、解放時にすべてのアロケーション・ページを保護し、そのアドレス空間が二度と使用できないようにします。これはuse-after-freeや double-freeの検出に便利です。ただし、32ビット・プログラムでは、利用可能なメモリー・アドレス空間がすぐになくなる可能性があります。
リーク・データの処理
Leak details で、プロセス終了時に収集されたリーク・データをどのように処理するかを決定する。None を選択すると、リーク・データは収集されない。リークタイプの検出を有効にすると、Heob はプロセス終了時にデータを収集するためにより多くの時間を必要とするかもしれません。
Simple を選択すると、解放されなかったすべてのメモリを結果ファイルに書き込みます。
Detect Leak Types を選択して、すべての静的およびグローバルメモリブロックを解析し、リークへの参照を探します。到達可能なブロックには到達可能のマークが付けられ、他の参照がないか再帰的にチェックされます。参照が見つかった場合、そのブロックは間接的に到達可能であるとマークされます。残りのブロックは、互いの参照がチェックされ、間接的に失われたか、(ブロックが互いを参照している場合)共同で失われたかのどちらかにマークされる。参照がまったくないブロックは失われたとマークされる。到達可能なブロックを結果ファイルにも記録するには、Detect Leak Types (Show Reachable) を選択する。
Fuzzy Detect Leak Types を選択すると、到達可能または間接的に失われたメモリ・ブロックにマークが付けられます。このオプションは、アロケーション・ブロック内のどこかにアドレスだけを保持し、アロケーション・ブロックの開始を直接参照しないカスタム・アロケータ(ffmpeg のav_malloc() など)と併用する場合に便利です。Detect Leak Types (Show Reachable) を選択すると、到達可能なブロックも結果ファイルに記録されます。
Minimum leak size で、検出するリークのサイズをバイト単位で選択します。
Control leak recording で、すべての漏れを記録するにはOff を選択する。リーク記録を実行中に変更することはできません。
リーク記録を開始せずに Heob を開始するには、On (Start Disabled) を選択します。Heob コンソールで、on またはoff 、clear すべての結果を記録するをオンにするか、show を選択して、現在のすべてのリークを結果ファイルに記録します。プロセスが終了する前にファイルを開いて内容を確認してください。
Heob の起動時にリーク記録を開始し、記録を制御するオプションを残すには、On (Start Enabled) を選択します。
Heobでメモリリークを検出する」、「How To: Analyze」、「Analyzer」、「Analyzing Code」も参照してください 。
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.