ディスパッチ・ブレーク機能は、ディスパッチ(タスクの切り替え)を条件としてユーザ・プログラムをブレークさせることができ、次にどのタスクが実行状態になるか、どのタスクがどこで待ち状態に移行しているかなど意識する必要なくデバッグを行うことが可能になります。待ち状態のタスクが複数あり、動作しているタスクが待ち状態を解除させた時に、期待した動きが得られない場合、複数の待ち状態にあるタスクの内どのタスクが動作したかを突き止める必要があります。従来では、待ち状態のタスク全ての解除待ちアドレスにソフトウェア・ブレーク・ポイント(SBP)を設定し、動作しているタスクを実行させて、ブレークしたポイントから、どの待ち状態タスクがwakeしたかを確認するといった作業が必要でした。
この様な時、ディスパッチ・ブレーク機能を使えばタスクの切り替り(ディスパッチ)でユーザ・プログラムをブレークさせることができるため、SBPを設定せずに動作しているタスクでいきなりステップ実行させれば、タスクの切り替りでブレークし簡単にwakeしたタスクが突き止められます。
エラー・コード・ブレーク機能は、システム・コールのエラー・コードを条件としてユーザ・プログラムをブレークさせることができます。システムコールを発行するとOSは戻り値にエラーコードを付加します。しかし、ユーザプログラムで正しいエラー処理が出来ていない場合や、エラー処理そのものが無く不安定な動作をしている場合には、その不具合の原因を発見することさえ困難な場合があります。
この様な時、エラー・コード・ブレーク機能を使えば、エラーコードでのブレーク指定ができるため、予測外のエラーが発生した場合や、エラー処理のデバッグを容易に行えます。
システム・コール発行機能は、デバッガから特定のシステム・コールを発行することができる機能です。待ち状態にあるタスクの待ちを解除させることや、サスペンド状態にすることができます。RTOSを使用したプログラムのデバッグでは、特定のタスクのデバッグをしたいことはよくありますが、他のタスクが頻繁に動作するため、そのタスクのデバッグに集中できない場合、従来はほかのタスクを停止させるようにソースを変更し、再コンパイルするような処理が必要でした。
システム・コール発行機能を使用すれば、このようなタスクをサスペンド状態にすることが簡単にできるため、デバッグのための再コンパイルが不要となり、効率よいデバッグが可能です。
RTOSステータス・ウィンドウからシステム・コールを発行することも可能です。
固定長メモリプールと可変長メモリプールの使用状況の履歴や、メモリブロックを獲得、返却するシステム・コールの呼出し履歴、メモリブロックのダンプ表示を行います。 システム・コールの呼び出し履歴からメモリブロックの解放漏れ(メモリ・リーク)や多重解放、無効なポインタでの解放、システム・コールのエラーなどを検出することも可能です。
現在生成中の全タスクのスタック情報を一覧表示します。 スタックの使用量やスタック・ポインタ位置はグラフィカルに表示されますので、各タスクの状況が一目で把握できます。 さらに、スタックの残量が少なくなるとスタックの使用状況に応じてエラーや警告で詳細な状況を通知します。 また、カレント・タスクや休止状態のタスクの背景色を変更することでタスクの状態も把握できます。
タスクのスタック使用量とスタック・ポインタを監視してスタック・オーバーフローが検出されるとユーザ・プログラムをブレークします。 ブレーク時は、オーバーフローしたタスクIDをエラー・メッセージに表示しますので問題のあったタスクを知ることができます。
タスク・トレース機能は、タスクの状態遷移のグラフィカル表示や、タスク毎のCPU占有率表示を実現した機能です。タスクの状態遷移表示では全体のタスク実行状態を一目で確認でき、タスクの切り替わりポイント、割込み発生ポイント、およびシステム・コール発行ポイントなどを時間軸との関係による解析や、リソースのロックやリリース・タイミングの確認などに有効です。また、CPU占有率の表示では、タスク毎のパフォーマンス比較ができるため、性能アップの確認に有効です。なお、タスクトレースの取り込みタイミングを指定できるトリガ機能もサポートしています。
タスクの遷移表示をグラフィカルに表示して、タスクの切り替わりや、割り込み発生ポイントを確認することができます。
表示を切り替えることでタスクごとのCPU占有率をグラフ表示することもできます。
ユーザ・プログラム実行中にタスク・トレース表示を一定時間間隔で更新する機能です。実行中にタスク・トレースの取り込みを許可、禁止することもできます。
タスクの切り替わりやシステムコールを条件にタスク・トレースの取り込みを制御することができます。
ユーザ・プログラムの任意の位置でユーザ定義のコメント等をタスク・トレース情報として出力することができます。 これにより、タイムスタンプを付加したprintデバッグが可能となります。 また、ミドルウェアやドライバのAPIを埋め込むことも可能となります。
コード追跡機能によりディスパッチ・グラフ表示(上ペイン)とイベント表示(下ペイン)の連携箇所が追跡ポインタによって示されます。 また、コード・ウィンドウ上にも追跡ポインタが表示されますので、プログラムの実行履歴をソース・レベルで解析することができます。
各項目にマウスカーソルを合わせると、その項目の詳細な説明がチップ・ヒントで表示されます。 また、ディスパッチ・グラフ表示をトレースに取得されたタスクだけに限定したり、キー操作でグラフをエッジ移動させることで前後のディスパッチ位置への移動がスムーズに行えるようになりました。
タスク・ブレーク機能は、指定したタスクIDをブレーク条件とすることができるブレーク機能です。複数のタスクから共通に呼び出される関数をデバッグする場合、特定のタスクで呼ばれた時のみブレークさせることができます。
ステータス表示機能は、タスクの待ち状態や、セマフォ、イベントフラグなどのタスクステータス状態を一覧で表示するRTOSデバッグの基本機能です。SH-2A、SH-4Aなどではユーザ実行中にも一定時間毎にサンプリング表示機能もサポートしています。
タタスクの待ち状態や、セマフォ、イベントフラグなどの状態を一覧で表示します。
<表示ステータス>
タスク、イベントフラグ、セマフォ、メールボックス、メモリプール、周期起動ハンドラ、アラームハンドラ、レディキュー、可変長メモリプール、ランデブ、メッセージバッファ、など
ユーザ・プログラム実行中にステータス表示を一定時間間隔で更新する機能です。リアルタイム性が要求されるシステムなどユーザ・プログラムを止めることなくステータス状態を参照することができます。
ヘッダ部や表示部にマウスカーソルを合わせると、その項目の説明がチップ・ヒントで表示されます。 また、ツール・バーにカレントのタスク名を表示していますので、タスクを意識したデバッグが可能となりました。
RTOSステータス・ウィンドウは各種カーネル・オブジェクトの状態を一覧表示しますが、この中から特定のカーネル・オブジェクトに着目して、より詳細な情報を参照することができます。 例えばタスクを指定した場合、そのタスクの詳細な情報が表示され、タスクが待ち状態であれば、さらにその待ち要因となっているカーネル・オブジェクトの詳細な情報も同時に表示されます。 また、各項目ごとに詳細な説明が表示されますのでマニュアルを参照する必要もありません。
コール・スタック機能は、タスク毎に関数の呼び出し履歴を表示する機能です。
各タスクの待ち位置が関数レベルで確認でき、どのような経路で現在の関数に到達したか直ぐに把握できます。
また、ダブルクリックにより各タスクの待ち位置のコード表示も簡単に行えます。
タスクの遷移状況を各プロセッサ毎に色分けしてグラフィカル表示します。
各プロセッサが実行したタスクを同じ時間軸上で確認することができるため、各プロセッサで共有するリソースのロック状態や、プロセッサ間の同期も一目で確認できます。
また、各プロセッサ毎にタスクの切り替わり、割込み発生ポイント、システム・コールの発行履歴などが簡単に把握でき、マルチコアで複雑になった実行状況を簡単に解析することができます。
各タスクのCPU占有時間、CPU占有率を各プロセッサ毎に色分けしてグラフィカル表示します。
各プロセッサ毎にタスク、割込み、アイドルの実行比率を確認することができるため、ボトルネックとなっているプロセッサ、タスクの発見が容易になり、パフォーマンス改善に役立ちます。
OS名 | 対応機能一覧 | 対応CPU | 対応ICE |
---|---|---|---|
µC3/Standard | ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
ARM | PALMiCE4 ARM*7 |
SuperH | PALMiCE3 SH*8 | ||
µC3/Standard | ![]() |
RX | PALMiCE3 RX*9 |
µC3/Standard+M | ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
ARM | PALMiCE4 ARM*7 |
PALMiCE4 ARM64*7 | |||
µC3/Compact | ![]() |
Cortex-M3 | PALMiCE4 CM*7 |
RX | PALMiCE3 RX*9 |
OS名 | 対応機能一覧 | 対応CPU | 対応ICE |
---|---|---|---|
NORTi Professional II NORTi Professional |
![]() ![]() ![]() |
ARM | PALMiCE4 ARM*7 |
SuperH | PALMiCE3 SH*8 | ||
H8S | PALMiCE3 H8S | ||
RX | PALMiCE3 RX*9 | ||
NORTi Oceans | ![]() |
Cortex-M3 | PALMiCE4 CM*7 |
RX | PALMiCE3 RX*9 |
OS名 | 対応機能一覧 | 対応CPU | 対応ICE |
---|---|---|---|
HI7000/4 | ![]() ![]() |
SH-2 | PALMiCE3 SH*8 |
HI7700/4 | ![]() ![]() |
SH-3 | |
HI7750/4 | ![]() ![]() |
SH-4 |
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |