T-Kernel 用タスクトレーサ
取扱説明書
T-Kernel 2/x86 評価キット用
Version 2.02

パーソナルメディア株式会社

c 2010–2018 Personal Media Corporation
Copyright ⃝

目次

2

目次
修正履歴

3

1

はじめに
1.1 本製品の概要 . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 ソフトウェア動作条件 . . . . . . . . . . . . . . . . . . . .
1.2.1 T-Kernel 側の動作条件 . . . . . . . . . . . . . . . .
1.2.2 表示用 PC 側の動作条件 . . . . . . . . . . . . . . .
1.3 ソフトウェア構成 . . . . . . . . . . . . . . . . . . . . . . .

4
4
5
5
5
6

2

セットアップ8
2.1 インストール . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 動作確認 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 アンインストール . . . . . . . . . . . . . . . . . . . . . . . 15

3

使用方法
3.1 起動方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 トレース対象 . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 トレース対象の選択 . . . . . . . . . . . . . . . . .
3.2.2 トレース対象のサスペンド . . . . . . . . . . . . . .
3.3 トレース開始/終了/条件指定 . . . . . . . . . . . . . . . .
3.3.1 トレース条件の指定 . . . . . . . . . . . . . . . . .
3.3.2 トレース開始/終了 . . . . . . . . . . . . . . . . . .
3.3.3 プログラム内からのトレース指定 . . . . . . . . . .
3.4 トレース結果の表示 . . . . . . . . . . . . . . . . . . . . .
3.4.1 表示モードの切替 . . . . . . . . . . . . . . . . . . .
3.4.2 グラフや表の見方 . . . . . . . . . . . . . . . . . . .
3.4.3 グラフの拡大縮小 . . . . . . . . . . . . . . . . . . .
3.4.4 タスクや割込ハンドラの表示順の入替 . . . . . . .
3.5 検索 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6 ファイル保存 . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.1 ファイル読込/保存 . . . . . . . . . . . . . . . . . .
3.6.2 ログファイル形式 . . . . . . . . . . . . . . . . . . .

17
17
17
17
19
20
20
22
22
23
23
25
27
27
27
28
28
28

索引

31

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation
⃝

修正履歴

3

修正履歴
改版

摘要

2.02

表示用 Java アプリケーションを分離

2.01

Java 7 Update 21 以降に対応

2.00

T-Kernel 2/x86 対応

1.00

新規作成

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

1. はじめに

1

はじめに

1.1

本製品の概要4

本製品「T-Kernel 用タスクトレーサ」は、T-Kernel 上のプログラムの動作解析ツールです。主な特長は次の通りです。

• タスクの遷移やシステムコール発行のログをグラフィカルに表示
T-Kernel 上で動作している複数のタスクの切り替わり (ディスパッチ) の様子がグラフで表示され、組込みシステム内部のソフトウェ
アの動作をビジュアルに把握できます。また、各タスクの実行したシステムコールの発行時刻、引数、戻値などのログを記録し、これらの情報を合わせて表示することも可能です。組込みシステムの動
作解析、デバッグ、チューニングなどを行う際には、タスクトレー
サで提供するこれらの情報が役立ちます。
• T-Kernel 2.0 対応
T-Kernel 2.0 で新しく追加された 64 ビット引数のシステムコール
もトレース可能です。
• トレース対象プログラムや実行環境の修正が不要
トレース対象となるタスクやプロセスのプログラムの修正や再コン
パイル、ソースコード等は必要ありません。また、システム起動時から動作しているタスクやプロセス、デバイスドライバやミドルウェ
ア等を後からトレース対象とすることも可能です。このため、トレースの有無によるシステム起動時の設定変更などを行う必要がなく、最終製品とほぼ同じ状態の下で組込みシステムの実行トレースを行うことができます。

• タスク、プロセス、ドライバなど広範囲のプログラムに対応
T-Kernel 上で動くタスクの実行トレースのほか、T-Kernel Extension 上で動くプロセスや割込ハンドラを含めた複数のプログラムを同時にトレースできます。アプリケーションプログラムはもちろん、拡張 SVC ハンドラやサブシステムによるミドルウェア、T-Kernel/SMのデバイス管理機能によるデバイスドライバの実行トレースも可能です。
• 用途に適した複数の表示モードを提供
実際の時間経過をグラフ横軸の単位とする時間グラフのほか、実行タスクの遷移やシステムコール発行の回数を横軸の単位とするイベ
タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

1. はじめに5ントグラフがあり、グラフの拡大や縮小表示も可能です。また、グラフのかわりに表形式でログを表示することも可能です。

• 収集するログの選択と豊富な検索機能
実行トレースのログは膨大な量になることが多いため、動作解析したい部分をログの中から素早く見つけ出すには、検索機能が必須です。タスクトレーサでは、特定タスクのディスパッチや特定システ
ムコールの発行などを検索条件とした、ログ内の柔軟な検索機能を提供しています。また、トレース中に収集するログの種類をあらかじめ選択できます。たとえば、実行タスク遷移のログのみを収集してシステムコール発行のログは収集しないといった指定が可能です。

1.2

ソフトウェア動作条件「T-Kernel 用タスクトレーサ」のソフトウェア動作条件は次の通りです。

1.2.1

T-Kernel 側の動作条件

T-Kernel 2/x86 評価キットの標準構成で動作します。
▷ 仮想環境について
タスクトレーサは実機上の T-Kernel 2/x86 で動作するほか、仮想環境 (VMware) 上の T-Kernel 2/x86 でも動作します。ただし仮想環境ではログの時刻情報が正しく得られない制限があります。この場合はトレース結果の表示モードとしては、時刻グラフではなく、イベントグラフまたはイベント表をご利用ください。

1.2.2

表示用 PC 側の動作条件

トレース結果を表示する表示用 PC は、次の条件を満たす必要があります。

• OS および開発環境について
表示用 PC の OS は何でも構いません。また T-Kernel 2/x86 評価
キット用開発環境がインストールされている必要もありませんが、インストールされていても構いません。つまり表示用 PC は開発用
PC と同じでも構いませんし、別の PC でも構いません。

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

1. はじめに6• Java について
表示用 PC には、Java 実行環境が必要です。

Java は http://www.java.com/ からダウンロードできます。
▷ 当社では表示用 PC は以下の環境で動作確認しております。
OS

Windows 10 (64 bit)

Java

Java 8 Update 191• LAN 接続およびシリアル接続について
タスクトレーサのインストール作業には、開発用 PC と T-Kernel
2/x86 をシリアル (RS-232C、仮想環境では vmwaregateway) で接続する必要があります。
一方、タスクトレーサのインストール後は、タスクトレーサと表示
用 PC の間の通信は LAN で行いますので、シリアル接続は必須ではありません。

1.3

ソフトウェア構成「T-Kernel 用タスクトレーサ」は、T-Kernel 2/x86 上で動作する 2 個のプログラムと、表示用 PC 上で動作する 1 個のプログラムの、合計 3 個のプログラムによって構成されます。

(1) トレース用ドライバ (tracedrv)— T-Kernel 2/x86 上で動作

tracedrv は、T-Kernel に標準的に含まれているデバッガサポート
機能 (T-Kernel/DS) を利用して、トレース対象プログラムのタスク
遷移やシステムコール発行のログを収集し、T-Kernel 2/x86 のメモ
リ (RAM) 上に記憶します。
tracedrv は下記 tracenet から使用されるほか、ユーザプログラム
からデバイス名 "tsktrc" を直接オープンして、ユーザプログラム
内でトレース開始/停止を指定することも可能です。
(2) トレース用通信プロセス (tracenet) — T-Kernel 2/x86 上で動作
tracenet は、T-Kernel 2/x86 のメモリ上に記憶されたログを、表
示用 PC に LAN(TCP/IP) で転送します。通信プロトコルは HTTP
を使います。

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

1. はじめに7▷ LAN の通信が発生するのは、トレース中ではなく、トレース終了後です。トレース中はメモリ上に記録していくだけで通信は発生しないため、通信によってトレース速度が低下することはありません。
(3) 表示用 Java アプリケーション (TaskTrace.jar) — 表示用 PC 上
で動作
表示用 Java アプリケーション (TaskTrace.jar) は、tracenet によって転送されたログを表示用 PC 上に表示します。

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

2. セットアップ

2

セットアップ2.1

インストール8

次の手順で、T-Kernel 2/x86 の起動ディスク (ハードディスクや CF カー
ドなど) に、タスクトレーサをインストールします。

(1) コンソールの準備
シリアル (RS-232C、仮想環境では vmwaregateway) で T-Kernel 2/x86 と開発用 PC を接続します。

T-Kernel 2/x86 用 Eclipse 版開発環境がインストールされた開発用
PC の場合は、Eclipse の外部ツール (メニューバー →「実行」→「外部ツール」) の te_vcom と gterm を起動したのち、gterm コンソー
ル上で ←- (Enter) キーを何回か押して、T-Kernel 2/x86 側から
CLI(コマンドラインインタプリタ) のプロンプト ([/SYS]%) が返ってくることを確認します。
▷ Eclipse 版開発環境以外の場合は、開発用 PC 側は端末ソフトを起動し、 ←- (Enter) キーを押すと T-Kernel 2/x86 側の CLIからプロンプト ([/SYS]%) が返ってくる状態にします。詳細につきましては、T-Kernel 2/x86 評価キットの取扱説明書をご参照ください。
(2) 起動ディスクの作成
タスクトレーサのインストールに先立って、T-Kernel 2/x86 に接続した書込み可能なディスク (ハードディスクや CF カードなど) にシ
ステムをインストールし、起動ディスクを作成する必要があります。
詳細につきましては、T-Kernel 2/x86 評価キットの取扱説明書をご参照ください。

(3) ネットワーク設定
T-Kernel 2/x86 と表示用 PC が LAN で接続できるように、必要なネットワーク設定を行ってください。T-Kernel 2/x86 側のネットワー
ク設定は、コンソールから「netconf」コマンドで表示、「netconfc」コマンドで設定できます。
▷ 仮想環境でのネットワーク設定
仮想環境 (VMware) 上の T-Kernel 2/x86 の場合は、VMwareのイーサーネットの設定を、ブリッジまたはホストオンリーに

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

2. セットアップ

9

してください。NAT では tracenet とウェブブラウザが接続できません。

(4) 既存の tracenet の終了 (再インストールの場合のみ)
新規にタスクトレーサをインストールする場合は必要ありませんが、既にタスクトレーサがインストールされている環境に上書きインストールする場合は、コンソールから ps コマンドで tracenet のプロ
セス ID を調べ、kill コマンドで tracenet を終了させてください。

[/SYS]% ps ←PID STAT PRI······..
.
3 W
224······[/SYS]% kill 3 ←-NAME
tracenet(5) インストーラの実行
コンソール上で、タスクトレーサのインストーラ (install.bz) をrecv コマンドで転送、expf コマンドで展開してから実行します。

[/SYS]% recv -c /cygdrive/d/jp/soft/install.bz ←[/SYS]% expf install.bz ←[/SYS]% install SYS ←>> Install Task Tracer on SYS (y/n) y ←.. Install Started.
.. Install Completed.
▷ 上記の recv コマンドの例は、インストーラがタスクトレーサの CD 内のD:Y=jpY=softY=install.bz にあり、端末ソフトは gterm の場
合です。ご使用の環境にあわせて読み替えてください。
▷ tracenet は HTTP のポート番号として標準では 80 を使いますが、他のプログラムが同じポート番号を使う場合を考慮して、tracenet のポート番号を他の番号に変更できます。その場合はインストーラの引数を次の例のようにしてください。
[/SYS]% install SYS -p 8080 ←-— ポート番号 8080

▷ インストーラの処理内容は次の通りです。
◦ tracedrv および tracenet をシステムディスク (SYS) 上にコピーします。

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

2. セットアップ

10◦ STARTUP.CLI (システム起動時に実行される、CLI の初期
コマンドスクリプト) を編集して、tracedrv のロードとtracenet の起動を追加します。
(6) インストーラの削除
インストールが終了したら、インストーラは次のように削除して構いません。

[/SYS]% rm install.bz ←[/SYS]% rm -r install←(7) システム再起動▷ RTH の場合:
システム再起動の前に、RAM ディスクの内容をディスクイメー
ジに保存する必要があります。
T-Kernel 2/x86 を再起動します。
tracedrv および tracenet が自動的に起動され、しばらくするとコンソール上にタスクトレーサの起動メッセージが表示されます。
[/SYS]% exit ←<< EXIT cli >>[IMS]% exit 1[IMS]% exit -1 ←<< SYSTEM RESTART >>
..
.
..
.
[/SYS]% Task Tracer 2.02 - http://192.9.200.116/
Copyright (C) 2010--2018 Personal Media Corporation▷ CLI が起動してからタスクトレーサの起動メッセージが表示されるまで、ネットワークの起動時間のため数秒ほど時間がかかる場合がありますが、正常です。
▷ コンソール上で、タスクトレーサの起動メッセージの後に CLIのプロンプト ([/SYS]%) が表示されなくても正常です。 ←キーを押すとプロンプトが表示されます。
(8) 表示用 Java アプリケーションの配置
表示用 PC 上の任意の場所に表示用 Java アプリケーション (TaskTrace.jar)
を配置 (コピー) します。
タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

2. セットアップ

11(9) 表示用 Java アプリケーションの起動
表示用 PC 上で表示用 Java アプリケーション (TaskTrace.jar) を起動します。
接続先ターゲットのダイアログが表示されますので、T-Kernel 2/x86の URL を入力して 接続 ボタンをクリックします (図 2.1)。

図 2.1

接続先ターゲットの入力▷ 例えば T-Kernel 2/x86 の IP アドレスが 192.9.200.116 で、tracenetのポート番号が標準の 80 であれば、指定するべき URL は次のようになります。
http://192.9.200.116/
なお、この URL はコンソール上のタスクトレーサの起動メッ
セージにも表示されています。
▷ 接続できない場合は、ネットワーク設定や、Java の設定などを見直してください。なお tracenet が既に起動している場合、ネットワーク設定を変更してもすぐに反映されず、システム再起動後に反映されますので、システムを再起動してください。
▷ 表示用 Java アプリケーションのメニュー言語は、日本語と英語の両方に対応しており、表示用 PC 側のロケール設定により切り替わります。

2.2

動作確認

タスクトレーサが正しく動作することを確認するため、サンプルプロ
グラムの実行のようすをタスクトレーサでトレースしてみます。ここではタスクトレーサの CD 内にある次のサンプルプログラムを使います。
名称

sample1

タイプ

T-Kernel ベース

内容

3 つのタスクが遷移する簡単なプログラム

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

2. セットアップ

12(1) サンプルプログラムのメイク、転送
T-Kernel 2/x86 評価キット用開発環境で sample1 をメイクし、メイクされた実行ファイルを T-Kernel 2/x86 のハードディスクや CF
カードなどに転送します。
Eclipse 版開発環境の場合は詳細手順は次の通りです。
(1-1) サンプルプログラムの展開
あらかじめ タスクトレーサの CD 内にあるサンプルプログラ
ムの ZIP アーカイブ「sample1.zip」を適当な場所に展開しておきます。

(1-2) プロジェクトの作成
Eclipse の T-Engine 開発パースペクティブで、次のようにプロジェクトを新規作成します。
• Eclipse のメニューバー →「ファイル」→「新規」→「TEngine C/C++ プロジェクト」を選択して、「新規プロジェクト」ダイアログを開きます。
• 「プロジェクト名」は「sample1」としてください。
• 「ターゲット」は対象機種 (pcat) を選択してください。
• 「プログラムタイプ」は「T-Kernel ベース」を選択してください。
• 「テンプレート」はチェックしないでください。
• 「出力ディレクトリの生成」はチェックしてください。
• 完了 をクリックすると、プロジェクトが生成されます。
(1-3) ソースのインポート
Eclipse の「C/C++ プロジェクト」内に作成されたプロジェ
クト「sample1」を選択して、次のようにソースをインポート
します。
• Eclipse のメニューバー →「ファイル」→「インポート」を選択して、「インポート」ダイアログを開きます。
• 「一般」の左の + をクリックして開き、「ファイルシス
テム」を選択して 次へ をクリックします。

• ソースディレクトリ欄の右の 参照 をクリックして「ディレクトリからインポート」ダイアログを開き、インポート
したいプログラム全体のフォルダを選択して、 OK をク
リックします。今回は上記で ZIP アーカイブから適当な場所に展開したフォルダ「sample1」を選択してください。
タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

2. セットアップ

13• インポートする対象として、sample1 の左の + をクリッ
クして開き、src ディレクトリのみをチェックして、 完了をクリックします。

sample1
pcat

√

src

(1-4) メイク
Eclipse のプロジェクト sample1 内のオブジェクト出力ディレ
クトリ (T-Kernel 2/x86 の場合は pcat) を選択した状態で、メニューバー →「プロジェクト」→「T-Engine Target の Makeall」を選択してメイクします。
(1-5) 実行ファイルの転送• あらかじめ Eclipse の外部ツール (メニューバー →「実行」→「外部ツール」) の te_vcom と gterm を起動しておきます。gterm コンソール上で Enter キーを何回か押して、T-Kernel 2/x86 側から CLI のプロンプト ([/SYS]%)が返ってくることを確認します。
• Eclipse のプロジェクト sample1 内のオブジェクト出力ディ
レクトリ (pcat) にメイクされた実行ファイル sample1 を選択して、右クリックメニューの「実行」→「構成および実行」を選択して、「構成および実行」ダイアログを開きます。
「T-Engine アプリケーション」の上で右クリックして「新規」を選択します。
「sample1」の転送方法やリモート実行
方法などの設定が自動的に行われます。
今回は実行ファイルの転送だけが目的で、リモート実行する必要はありませんので、リモート実行タブを選択し、リモート実行のチェックを外します。
実行 ボタンをクリックすると、自動的に sample1 のファ
イル転送が行われます。
(2) トレース開始
表示用 Java アプリケーションの トレース開始 ボタンをクリック
して、トレースを開始します。「トレース中」と表示されます。(図2.2)

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

2. セットアップ

14

図 2.2

トレースを開始したところ(3) トレース対象プログラムのロード
表示用 Java アプリケーションのメニューバー →「対象」→「T-Kernel
ベースロード」を選択すると、ダイアログが表示されます。(図 2.3)

図 2.3

T-Kernel ベースプログラムのロード

さきほど転送した sample1 の実行ファイルを選択して、 ロード ボ
タンをクリックします。これにより sample1 がロード (起動) されます。

▷ sample1 は短いプログラムなので、一瞬で実行が終了します。
(4) トレース終了
表示用 Java アプリケーションの トレース終了 ボタンをクリック
して、トレースを終了します。
これにより sample1 の実行ログが表示されます。(図 2.4)

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

2. セットアップ

図 2.4

15

sample1 の実行ログのイベントグラフ

画面左下のラジオボタンで、時間グラフ、イベントグラフ、イベン
ト表の 3 通りの表示モードを切り替えて表示できます。また画面右下の水平スライダーでグラフの横方向の拡大縮小を行うことができ
ます。

2.3

アンインストールタスクトレーサが不要になった場合は、T-Kernel 2/x86 の起動ディスクから次の手順でアンインストールできます。

(1) 既存の tracenet の終了
ps コマンドで tracenet のプロセス ID(PID) を調べ、kill コマン
ドで tracenet を終了させます。
[/SYS]% ps ←PID STAT PRI
···
..
.
3 W
224
···
[/SYS]% kill 3 ←-NAME
tracenet(2) アンインストーラの実行
コンソール上で、タスクトレーサのアンインストーラ (uninst.bz)
を recv コマンドで転送、expf コマンドで展開してから実行します。

[/SYS]% recv -c /cygdrive/d/jp/soft/uninst.bz ←[/SYS]% expf uninst.bz ←[/SYS]% uninst SYS ←>> Uninstall Task Tracer on SYS (y/n) y ←タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

2. セットアップ
..
..

16

Uninstall Started.
Uninstall Completed.

▷ 上記の recv コマンドの例は、アンインストーラがタスクト
レーサの CD 内の
D:Y=jpY=softY=uninst.bz にあり、端末ソフトは gterm の場合です。ご使用の環境にあわせて読み替えてください。
▷ アンインストーラの処理内容は次の通りです。
◦ tracedrv および tracenet をシステムディスク (SYS) 上から削除します。
◦ STARTUP.CLI を編集して、tracedrv のロードと tracenetの起動を削除します。
(3) アンインストーラの削除
アンインストールが終了したら、アンインストーラは次のように削除して構いません。

[/SYS]% rm uninst.bz ←[/SYS]% rm -r uninst←(4) システム再起動▷ RTH の場合:
システム再起動の前に、RAM ディスクの内容をディスクイメー
ジに保存する必要があります。
T-Kernel 2/x86 を再起動し、タスクトレーサが起動しないことを確認します。
[/SYS]% exit ←<< EXIT cli >>[IMS]% exit 1[IMS]% exit -1 ←<< SYSTEM RESTART >>
..
.
..
.
[/SYS]%

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

17

使用方法

3

タスクトレーサのインストール後の使用方法について説明します。

3.1

起動方法

T-Kernel 2/x86 側は、システムを起動すると自動的に tracedrv、tracenet
が起動しますので、特に何もする必要はありません。
表示用 PC 側は、表示用 Java アプリケーション (TaskTrace.jar) を起動します。接続先ターゲットのダイアログが表示されますので、T-Kernel
2/x86 の URL を入力して 接続 ボタンをクリックします (図 3.1)。

図 3.1

接続先ターゲットの入力▷ 例えば T-Kernel 2/x86 の IP アドレスが 192.9.200.116 で、tracenetのポート番号が標準の 80 であれば、指定するべき URL は次のようになります。
http://192.9.200.116/
なお、この URL はコンソール上のタスクトレーサの起動メッセー
ジにも表示されています。

3.2

トレース対象タスクトレーサはシステム上のすべてのプログラム (タスク、割込ハンドラ) のうち、ユーザがトレース対象として選択したプログラムのみをト
レース対象とします。

3.2.1

トレース対象の選択

トレース対象を選択するには、次のようにいろいろな方法が用意されています。これらを組み合わせることで、複数のプログラムにまたがるト
レースも可能です。(図 3.2)
タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

18

図 3.2

トレース対象の選択メニュー• プロセス起動時にトレース対象とする方法
メニューバー →「対象」→「プロセス起動」でプロセスを新規に起動すると、そのプロセスのメインタスクおよびサブタスクは、すべてトレース対象として追加されます。

▷ トレース対象とするプロセスの実行ファイルが T-Kernel 2/x86
側にない場合は、あらかじめ開発環境を使って T-Kernel 2/x86
側にファイル転送しておく必要があります。
• T-Kernel ベースプログラムのロード時にトレース対象とする方法
メニューバー →「対象」→「T-Kernel ベースロード」で、T-Kernel
ベースプログラムを新規にロードすると、そのプログラムが生成するタスクや定義する割込ハンドラは、すべてトレース対象として追加されます。

▷ トレース対象とする T-Kernel ベースプログラムの実行ファイ
ルが T-Kernel 2/x86 側にない場合は、あらかじめ T-Kernel
2/x86 側にファイル転送しておく必要があります。
▷ T-Kernel ベースプログラムの main 関数 (初期化処理関数) そのものはトレース対象に含まれませんが、main 関数内で生成したタスクや割込ハンドラはトレース対象に含まれます。
• タスク一覧から個別に指定、または解除する方法
メニューバー →「対象」→「タスク一覧」で、タスクを個別にトレース対象として指定、または解除できます。この方法は既に起動しているプログラムをトレース対象として追加する場合に便利です。
プロセスもタスク (の集合) ですので、タスク一覧で指定できます。

▷ プロセス名が長い場合は、英数字の先頭 5 文字まで表示されます。
タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

19• 割込一覧から個別に指定、または解除する方法
メニューバー →「対象」→「割込一覧」で、割込ハンドラを個別にトレース対象として指定、または解除できます。この方法は既に起動しているプログラムの割込ハンドラをトレース対象として追加する場合に便利です。

▷ TA_HLNG 属性の割込ハンドラ (C 言語などの高級言語で書かれたハンドラ) のみトレース可能です。TA_ASM 属性の割込ハン
ドラ (アセンブリ言語で書かれたハンドラ) は対象外です。
• トレース対象を全解除する方法
メニューバー →「対象」→「全解除」でトレース対象をすべて解除できます。

▷ 今までトレースしていたプログラムをトレース対象から外し、別のプログラムをトレースしたい場合は、この全解除を行って
ください。

3.2.2

トレース対象のサスペンド

通常、トレース対象のタスクは、トレース中であるかトレース中でないかに関係なく、常に実行されます。
これに対してメニューバー →「対象」→「サスペンド」をチェックしておくと、トレース対象のタスクをトレース中のみ動かし、トレースしていない時はサスペンド (停止) することができます。この機能は、タスクを止めながら少しずつトレースしたい場合に便利です。

▷ この機能を使った場合、タスクの状態とは無関係に外部から強制的にサスペンドをかけるため、そのタスクがミドルウェア内部の処理を実行中の場合は、そのミドルウェア全体が停止したり、正常に動作しなくなる可能性があり、その結果として、同じミドルウェアを呼び出す他のタスクやプロセスも連鎖的にブロックする可能性があります。サスペンド機能を使う場合は、この点を充分ご理解の上ご使用ください。サスペンドの詳細につきましては、T-Kernel 仕様書の tk_sus_tsk の解説をご参照ください。

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

3.3
3.3.1

20

トレース開始/終了/条件指定
トレース条件の指定

トレース開始前に、メニューバー →「トレース」から次のような詳細メニューでトレース条件を選択できます (図 3.3)。

図 3.3

トレース条件の詳細メニュー▷ トレース条件の指定はトレース開始前に行う必要があります。トレー
ス中は変更できません。
• システムコールを記録
システムコール発行のログを記録するかどうかを選択します。

▷ システムコール発行のログを記録する、しないに関わらず、「実
行タスク遷移 (ディスパッチ)」および「割込ハンドラの開始と終了」は必ず記録します。
システムコール発行のログを記録する場合は、さらに次の詳細設定を選択できます。

◦ T-Kernel システムコール
T-Kernel のシステムコール (名称:tk_xxx_yyy) を記録するかどうかを指定します。
▷ T-Kernel/DS のシステムコール (名称:td_xxx_yyy) は記録対象に含まれません。
◦ Extension/拡張 SVC
T-Kernel Extension のシステムコールや拡張 SVC を記録するかどうかを指定します。

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

21▷ T-Kernel/SM のシステムコール (tk_opn_dev など) は厳密に言えば拡張 SVC ですが、タスクトレーサでは「T-Kernel
システムコール」に含めています。
▷ プロセスから呼び出す「T-Kernel 互換システムコール」(名称:btk_xxx_yyy) は「T-Kernel システムコール」には含まれず、「Extension/拡張 SVC」に含まれます。
◦ 引数を記録
システムコールや拡張 SVC の引数および呼出元アドレスを記
録するかどうかを指定します。

◦ 引数の最大長システムコールや拡張 SVC の引数を最大で何個まで記録するかを指定します。5 個、10 個、20 個が選択可能です。標準では5 個です。ただし 64 ビット引数は 2 個と数えます。

• ログ記憶容量
ログを記憶するための T-Kernel 2/x86 上のメモリ (RAM) 容量を指定します。ここで指定したメモリ量はタスクトレーサ専用に確保されます。単位は KB です。また、末尾に「%」をつけた場合は、空きメモリ容量に対する割合 (パーセント) で指定できます。
この容量を増やせば多くのログを多く記録できます。ただしタスク
トレーサ以外のプログラムが確保できるメモリは減少します。また、システムの安定的な動作のために、ある程度の空きメモリを残す必
要があります。
なお標準ではタスクトレーサの起動時に、空きメモリ容量の 10%がログ記憶容量として確保されています。

▷ タスクトレーサがログを記録するために必要なメモリ量は次の通りです。
システムコール引数をログ 1 個あたり 24 バイト必要

記録しない場合(1 MB あたり約 4 万個)

システムコール引数をログ 1 個あたり 48 バイト必要

5 個まで記録する場合(1 MB あたり約 2 万個)

システムコール引数をログ 1 個あたり 72 バイト必要

10 個まで記録する場合(1 MB あたり約 14000 個)

システムコール引数をログ 1 個あたり 120 バイト必要

20 個まで記録する場合(1 MB あたり約 8000 個)

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

22∗ ログ 1 個が、1 回のシステムコール呼出/復帰やタスク遷
移、割込に対応します。
• ログ上書き許可
ログ記憶容量を越えてさらにログを記録する場合、上書きを許可しておくと、過去のログを古い順に消去していき、新しいログをメモリ上に残します。つまり古いログが失われることになります。
一方上書きを許可しない場合は、ログ記憶容量を越えたログは記録
せず、それ以前のログをメモリ上に残します。つまり新しいログが失われることになります。

3.3.2

トレース開始/終了

トレースを開始するには トレース開始 ボタン (またはメニューバー →「トレース」→「トレース開始」) をクリックします (図 3.4)。また、ト
レースを終了するには トレース終了 ボタン (またはメニューバー →「トレース」→「トレース終了」) をクリックします。トレースを終了させる
ことにより、記録されたログがグラフまたは表形式で表示されます。

図 3.4

トレースを開始したところ▷ プログラムの起動直後にトレースを開始するには、あらかじめトレー
ス開始を指定しておいてから、プログラムを起動 (ロード) します。
一方、トレース対象プログラムを起動した後で、任意の時点でトレースを開始することもできます。その場合はプログラムの途中からのトレースになります。

3.3.3

プログラム内からのトレース指定

上記のボタンやメニュー操作以外に、トレース対象のプログラム内からトレース取り直しとトレース終了を指定することもできます。この機能は、プログラム中の特定の処理に注目してトレースしたい場合に便利です。

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

23• トレース取り直しデバイス "tsktrc" の属性データ番号 -100 に対して 32 ビット整数の 0 を書き込むと、現在までのログを破棄して最初からログを取り直します。

• トレース終了
デバイス "tsktrc" の属性データ番号 -101 に対して 32 ビット整数の 0 を書き込むと、トレースを終了し、それ以降はログの記録を行いません。
以下にプログラム例を示します。

W dd, b, asiz;dd = tk_opn_dev( "tsktrc", TD_UPDATE );b = 0;/* トレース取り直し */tk_swri_dev( dd, -100, &b, sizeof(b), &asiz );..
.
/* トレース終了 */tk_swri_dev( dd, -101, &b, sizeof(b), &asiz );tk_cls_dev( dd, 0 );3.4

トレース結果の表示

トレース終了 ボタン (またはメニューバー →「トレース」→「トレース終了」) でトレースを終了させます。記録されたログがグラフまたは表形式で表示されます。

3.4.1

表示モードの切替

画面左下のラジオボタンで、次の 3 通りの表示モードを切り替えて表示できます。

(1) 時間グラフ
グラフの横軸のスケールを実際の時間経過に合わせた表示モードです。横軸の 1 目盛りが一定の時間に対応し、横軸方向の長さが実際の時間に比例します。時間の経過の長短がグラフ上で分かりますので、たとえば、どのタスクの処理で時間がかかっているかを把握するのに便利な表示モードです。(図 3.5)
タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

24

図 3.5

時間グラフ

▷ 実機の場合は問題ありませんが、仮想環境 (VMware) では時
刻情報が正しく得られない制限があります。この場合は時刻グ
ラフではなく、イベントグラフまたはイベント表をご利用ください。
(2) イベントグラフ
実際の時間経過とは関係なく、システムコール発行や実行タスク遷
移などの「イベント」の回数を横軸の単位として表示するモードです。横軸の 1 目盛りが 1 回のイベントに対応し、実際の時間との対応は一定しません。結果的に、多くのイベントの発生している部分、
すなわちタスク遷移などが複雑な部分を拡大して表示することになります。イベントの順序関係を把握するのに便利な表示モードです。
(図 3.6)

図 3.6

イベントグラフ(3) イベント表
イベントを発生順に表の形式で表示します。(図 3.7)
タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

25

図 3.7

イベント表

▷ 「イベント」という用語について
この説明書では、タスクトレーサのログ収集の対象となる事象を総称して「イベント」と呼んでいます。具体的には「システムコー
ルの呼出と復帰」、「実行タスク遷移 (ディスパッチ)」、「割込ハンドラの開始と終了」の 3 種類を指します。

T-Kernel 仕様書や T-Kernel Extension 仕様書に出てくる「イベント」という用語とは異なる意味ですので、ご注意ください。

3.4.2

グラフや表の見方• ログサイズ記録されたイベントの個数と、記録された最初のイベントから最後のイベントまでの時間の長さが表示されます。
ログ記憶容量を超えた場合、古いログが失われたときはイベント個数の前に「*」がつきます。一方、新しいログが失われたときはイベント個数の後ろに「*」がつきます。

• CPU 負荷記録された最初のイベントから最後のイベントまでの間の、トレース対象のタスクやハンドラの CPU 負荷 (CPU 使用率) を、次の式で求めて表示します。

CPU 負荷 =トレース対象のタスクやハンドラの実行時間の和(最後のイベントの時刻 − 最初のイベントの時刻)

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

26

時間グラフおよびイベントグラフの見方は次の通りです。

• システムコール/拡張 SVC の呼出グラフ上にで示されます。

• システムコール/拡張 SVC からの復帰
グラフ上にで示されます。

• システムコール/拡張 SVC の呼出直後の復帰
グラフ上にで示されます。

• タスク遷移 (ディスパッチ)、および割込ハンドラの開始と終了
グラフ上に

または

で示されます。

• イベント情報ラベル
グラフ上の各イベントに対する情報の一部はラベル (吹き出し) で表示されます。このラベル表示はメニューバー →「表示」→「ラベル表示」で消すことができます。

▷ ラベルを表示するスペースが狭い場合は、ラベルに表示できる
情報が少なくなります。この場合は、グラフを拡大するか、イベント詳細情報を見てください。
• イベント詳細情報
グラフ上のイベントをクリックすると、ウィンドウ下部にイベントの詳細情報が表示されます。詳細情報を表示しているイベントの位
置は青い縦線で表示されます。

• タスク・割込ハンドラ詳細情報
グラフの左側の縦軸のタスクや割込ハンドラをクリックすると、ウィンドウ下部に詳細情報が表示されます。詳細情報を表示しているタ
スクや割込ハンドラは青い枠で表示されます。

イベント表において、X は、トレース対象外のタスクへ/からの実行遷移
や、実行するタスクが存在しないことを意味します。

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法
3.4.3

27

グラフの拡大縮小

画面右下の水平スライダー、もしくはマウスホイールの操作により、グラフの横方向の拡大縮小を行うことができます。
また画面左端の垂直スライダーの操作により、グラフの縦方向の拡大縮小を行うことができます。

3.4.4

タスクや割込ハンドラの表示順の入替

グラフの縦軸のタスクや割込ハンドラの並び順は、標準ではタスク ID
や割込番号の小さい順に上から並んでいます。
この並び順を変更したい場合、グラフの左側の縦軸のタスクや割込ハン
ドラをクリックして詳細情報が表示された状態で、 Shift + ↑ キーまたはShift + ↓ キーを押してください。対象となったタスクや割込ハンドラの表示順を、上下に入れ替えることができます。

3.5

検索

トレース結果 (時間グラフ、イベントグラフ、イベント表) が表示された状態で、メニューバー →「表示」→「検索」でログを検索することができます。
たとえば図 3.8 は検索条件として「タスク ID が 100 のタスクからのtk_wup_tsk の呼出」を指定した場合です。

図 3.8

検索画面

• タスク
検索対象となるタスクを選択します。
「入る」をチェックすると、そのタスクへの実行遷移を検索します。
「抜ける」をチェックすると、そのタスクから他のタスクへの実行遷移を検索します。
タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

28「入る」「抜ける」ともチェックしない場合でも、そのタスクの発行するシステムコールは検索できます。

• 割込
検索対象となる割込ハンドラを選択します。
「開始」をチェックすると、その割込ハンドラの実行開始を検索します。
「終了」をチェックすると、その割込ハンドラの実行終了を検索します。
「開始」「終了」ともチェックしない場合でも、その割込ハンドラの発行するシステムコールは検索できます。

• システムコール
検索対象となるシステムコールまたは拡張 SVC を選択します。
「呼出」をチェックすると、そのシステムコールの呼出を検索します。
「正常」をチェックすると、そのシステムコールからの正常復帰 (戻値が 0 以上) を検索します。
「エラー」をチェックすると、そのシステムコールからのエラー終了 (戻値がマイナス) を検索します。

3.6
3.6.1

ファイル保存
ファイル読込/保存

トレース結果 (時間グラフ、イベントグラフ、イベント表) が表示された状態で、メニューバー →「ファイル」→「保存」を選択すると、ログをファイルに保存することができます。
また、ファイルに保存したログは、メニューバー →「ファイル」→「開く」の操作で読み込むことができます。

3.6.2

ログファイル形式

ログのファイル形式はタブ区切りのテキストです。表計算ソフトなどで読み込んで処理することも可能です。
ファイル形式の詳細は次の通りです。なお、以下の「⇀」はタブ文字を表します。

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

29(1) 1 行目は次の形式のヘッダです。
保存形式 ⇀ タスク数 ⇀ 割込数 ⇀ イベント数 ⇀ ログ喪失

• 保存形式
1: システムコール引数および呼出元アドレスを記録しない
2: システムコール引数および呼出元アドレスを記録する• ログ喪失0: ログ喪失なし
1: 新しいログが喪失
2: 古いログが喪失(2) 次にタスクおよび割込ハンドラの情報がタスク数+割込数だけ続きます。
• タスク情報0 ⇀ タスク ID ⇀ プロセス ID ⇀ 拡張情報 ⇀ 優先度 ⇀ アドレス
▷ プロセス ID は、プロセスに所属しないタスクの場合は 0です。
▷ 拡張情報は、プロセスに所属しないタスクの場合は exinf、プロセスに所属するタスクの場合はプロセス名 (英数字先
頭 5 文字) です。
• 割込ハンドラ情報
1 ⇀ 割込番号 ⇀ アドレス(3) 最後にイベント情報がイベント数だけ続きます。先頭の列は ms 単
位の時刻、次の列は ns 単位の時刻のオフセットを示します。3 列目
以降は次の形式です。
• タスク遷移1 ⇀ 遷移元タスク ID ⇀ 遷移先タスク ID ⇀ 遷移元タスク状態• 割込ハンドラ実行開始
2 ⇀ 実行中タスク ID ⇀ 割込番号
• タスクからのシステムコール呼出と復帰
3 ⇀ タスク ID ⇀ システムコール機能番号 ⇀ システムコール
名 ⇀ 戻値 ⟨⇀ 呼出元アドレス ⇀ 引数 . . .⟩タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation⃝

3. 使用方法

30• タスクからのシステムコール呼出
4 ⇀ タスク ID ⇀ システムコール機能番号 ⇀ システムコール
名 ⟨⇀ 呼出元アドレス ⇀ 引数 . . .⟩• タスクからのシステムコール復帰
5 ⇀ タスク ID ⇀ システムコール機能番号 ⇀ システムコール
名 ⇀ 戻値• 割込ハンドラ実行終了
6 ⇀ 実行中タスク ID ⇀ 割込番号
• 割込ハンドラからのシステムコール呼出と復帰
7 ⇀ 割込番号 ⇀ システムコール機能番号 ⇀ システムコール
名 ⇀ 戻値 ⟨⇀ 呼出元アドレス ⇀ 引数 . . .⟩• 割込ハンドラからのシステムコール呼出
8 ⇀ 割込番号 ⇀ システムコール機能番号 ⇀ システムコール
名 ⟨⇀ 呼出元アドレス ⇀ 引数 . . .⟩• 割込ハンドラからのシステムコール復帰
9 ⇀ 割込番号 ⇀ システムコール機能番号 ⇀ システムコール
名 ⇀ 戻値

タスクトレーサ取扱説明書

c 2010–2018 Personal Media Corporation
⃝

31

索引
ファイル形式 . . . . . . . . . . . . . . . . . 28
CPU 負荷 . . . . . . . . . . . . . . . . . . . . 25 ファイル保存 . . . . . . . . . . . . . . . . . 28
プロセス起動 . . . . . . . . . . . . . . . . . 18
J
プロセス名 . . . . . . . . . . . . . . . . 18, 29
Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
ポート番号 . . . . . . . . . . . . . . . . . . . . 9
CR

RTH . . . . . . . . . . . . . . . . . . . . . . 10, 16Tまメニュー言語 . . . . . . . . . . . . . . . . . 11
ら

T-Kernel/DS . . . . . . . . . . . . . . . 6, 20
ロード . . . . . . . . . . . . . . . . . . . . . . . . 18
T-Kernel/SM . . . . . . . . . . . . . . . . . 21
ログ上書き許可 . . . . . . . . . . . . . . . 22
ログ記憶容量 . . . . . . . . . . . . . . . . . 21
V
VMware . . . . . . . . . . . . . . . . . 5, 8, 24 ログサイズ . . . . . . . . . . . . . . . . . . . 25
あわアンインストール . . . . . . . . . . . . . 15 割込一覧 . . . . . . . . . . . . . . . . . . . . . 19
イベント . . . . . . . . . . . . . . . . . . . . . 25
インストール . . . . . . . . . . . . . . . . . . 8
か

拡張 SVC . . . . . . . . . . . . . . . . . . . . . 20
仮想環境 . . . . . . . . . . . . . . . . 5, 8, 24
検索 . . . . . . . . . . . . . . . . . . . . . . . . . . 27
さサスペンド . . . . . . . . . . . . . . . . . . . 19
システムコール . . . . . . . . . . . . . . . 20
たタスク一覧 . . . . . . . . . . . . . . . . . . . 18
トレース開始/終了 . . . . . . . . . . . . 22
トレース条件 . . . . . . . . . . . . . . . . . 20
なネットワーク設定 . . . . . . . . . . . . . . 8
は引数 . . . . . . . . . . . . . . . . . . . . . . . . . . 21

T-Kernel 用タスクトレーサ取扱説明書
T-Kernel 2/x86 評価キット用

Version 2.02

パーソナルメディア株式会社

Web: http://www.t-engine4u.com/
E-Mail: te-sales@personal-media.co.jp
c 2010–2018 by Personal Media Corporation
Copyright ⃝