IDE に統合された専用デバッガで、通常のソースコードデバッグに加え、SOLID独自に追加した「アドレスサニタイザー」「カバレッジ機能」などデバッグ作業を支援するデバッグ機能を備えています。デバッグ接続は、京都マイクロコンピュータ製のJTAGエミュレータであるPARTNER-Jet2 が使える他、ユーザーシステムにカスタマイズしたオンラインモニタも利用可能(お客様別にオプション提供)です。
アドレスサニタイザは、LLVM/Clang コンパイラのデバッグ・テスト支援機能の一つで、メモリ破壊や リークなどを実行時に検出する動的解析機能です。使い方は簡単。アドレスサニタイザモードでビルドして実行するだけです。自分で考えてブレークポイントを設定するなど必要ありません。SOLID-IDE と SOLID-OS が連携して、間違ったメモリアクセスを自動的にあぶり出してくれます。
(アドレスサニタイザの詳しい技術は、こちらをご参照ください)
予期せぬ多重割り込みの発生などで、スタックオーバーフローを起こしてしまうといったバグに対しては、スタックメモリを破壊する(オーバーフローする)直前にバグを自動的に検出し、デバッガ画面上でオーバーフローを起こしたタスクをわかりやすく表示します。このため、結合テストで初めて発覚するようなバグを、単体テスト段階で対策しておくことが可能になります。
ソースコード中の各ベーシックブロック単位ごとに、実行された回数を記録、表示する C1カバレッジ相当の機能です(*)。デバッグ中に期待通りにコードが実行されているかを確認したり、実行回数が多い部分を抽出して最適化の調整をするといった用途に利用できます。
・ビルド時にコードカバレッジ機能を有効にしてビルドするだけで、コンパイラがプログラムの分岐箇所に通過回数カウンタ(64bit)を埋め込みます。
・デバッガでプログラムを実行、ブレークした時にソースコード上で実行回数を表示します。
カバレッジ結果を、llvm-profdata などの汎用解析ツールに取り込むことが出来るので、レポート作成にも活用できます。
(*)本カバレッジ機能がカウントするのは分岐命令で区切られたブロックの先頭の通過回数です。当該ブロック実行中に割り込みが入った場合に、ブロックの最後までプログラムが実行されたかどうかを確認することはできません。
イベントトラッカーは、タスクやスレッドの遷移を時間軸に沿ったGUIで表示することで、容易にOSのスレッドやタスクのプロファイリングができる機能です。
・タスク、割り込み、周期ハンドラなどのモジュール名単位で実行遷移を時間軸表示します。
・詳しく解析したい箇所でマウスのホイールを回すと、時間軸のズームイン・ズームアウト表示ができます。
・タイムバーを使って、簡単に指定したイベント間の実行時間が表示できます。
ビルド後のELFファイルを使い、プログラムのコードサイズやワークメモリのサイズをコンパイル単位やセクション単位でGUIで表示・確認できます。
2つのファイル比較を使えば、バージョンアップの前後でのサイズ変更の確認にも有効です。
ELFファイル内にあるシンボル情報をもとに、変数や関数のアドレス(論理アドレス)と、サイズを分かり易く表示する機能です。
簡単な操作でシンボル名でのソートや検索ができます。
JTAGデバッガとモニタデバッガ、2つのデバッグモードをサポートします。
JTAGデバッグモードでは、PARTNER-Jet2を利用できます。デバッガのユーザインターフェースとしては、既存のデバッガだけでなく、Visual Studio®ベースのSOLID-IDEでも利用可能です。
モニタデバッガはユーザー資源であるUSB通信を推奨I/Fとし、Visual Studio®ベースのSOLID-IDEから操作します。基本デバッグ機能(H/WブレークやS/Wブレーク)や、デバッグ割り込み以外の割り込みハンドラもデバッグ可能です。ユーザーシステム構成に応じたモニタデバッガのカスタマイズサービスも提供可能です。
PARTNER-Jet2を使ったデバッグ
QProbeアナライザーをSOLIDに組み込んで使いやすい形で提供します。解析用のフックルーチンを予めSOLID-OSに組み込んであるので、ユーザーはビルドモードを選ぶだけで簡単にアナライザー機能を使う事ができます。
なお、SOLID Starter Kitでは、QProbeアナライザーはご使用いただけません。