関数のプロファイラーから全ての情報を得られない
テクニカル・ノート 25884
アーキテクチャ:
ARM
コンポーネント:
debugger
更新日:
2018/08/08 8:17
はじめに
関数プロファイラに表示される情報が非常に少ない場合があります。そのような場合、ほとんどの列が空になっています。
背景
SWOチャネルで得られたデータから関数プロファイラウィンドウに表示される情報が作成される際、その情報はサンプリングされたデータから取得されます。すなわち、その情報は連続的に収集されているわけではありません。
SWOに関するコメント
SWOはサンプリングプロセスであることに注意してください(すなわち、連続的に情報が出力されるわけではありません)。そのため、SWOの各データパッケージには、サンプリング時にPCがどのアドレスの命令を実行していたかの情報しか含まれていません。関数プロファイラウィンドウに表示される内容を解釈する場合、この状況を考慮する必要があります。
(実行された命令に関するデータを収集するための技術として、ETMと呼ばれるものがあります。これは、ターゲットを完全にトレースし、実行されたすべての命令に関するデータを提供します)。
関数プロファイラウィンドウに関するコメント
SWOを使用してプロファイルを行うと、以下のような結果が得られます(ここでは、ETMを使用したプロファイリングとの違いも示してあります)。
列 | SWOの(サンプリングされた)データ | ETMの(連続的な)データ |
コール (Calls) |
デバッガがPCの値をサンプリングするため、この列は空になります。デバッガは、サンプリングされていない時間に関数が呼び出されていたかどうかをサンプルから判断することはできません。 | ETMによるトレースでは、デバッガがこの関数のすべての呼び出しに関する情報を取得するので、状況は少し異なります。 |
フラット時間 (Flat time) |
PCがこの関数内の命令を実行していたときに収集されたサンプルの数 | この関数内で消費された時間(サイクル数) |
フラット時間(%) |
この関数で取得されたサンプルの数(サンプル総数に対するパーセント値) | 合計時間の割合で表されたフラット時間(サイクル数) |
累積時間 |
未使用 | この関数およびこの関数によるすべての呼出しで消費された時間(サイクル数) |
累積時間(%) (Acc time) |
未使用 | 合計時間の割合で表された累積時間(サイクル数) |
コメントつきの画像
関数プロファイラウィンドウの画像に関するコメント(SWOのデータを使用する場合):
全ての製品名は、それぞれの所有者の商標または登録商標です。