【adviceXross】組込み開発の課題をトレースデータの活用で解決!
DTSブログ
更新日:2021/06/21
現在、組込み開発で以下のような課題でお悩みではないですか?
  • デバッグのためのプリント文の挿入(リリース時のビルドとの違い)
  • 不特定不具合の追跡のためのステップ実行の繰り返しによる煩雑作業
  • コードレビューでは障害に気づかないほど、アルゴリズムが複雑化
  • ソースコードの可読性の悪さ(冗長的な関数の定義、消し忘れのレガシーコードの影響)
  • システム全体のパフォーマンスを上げるためのクリティカルパス特定に難航

【 adviceXrossトレースモデルで取得したトレースデータを活用して解決方法をご紹介!】

■プリント文やステップ実行でのデバッグ効率の悪さ
【課題】
プリント文デバッグは、プログラムの流れや変数・データ値の変化など任意の情報が出力できる便利なデバッグ手法ですが、確認したい内容によって入れ先が異なり、場合によっては「プリント文挿入→ビルド→ダウンロード→実行→ログ取得」の流れを複数回繰り返し、結果的に非効率になることがあります。
また製品リリース向けにプリント文を外して実行すると挙動が変わる問題が発生してしまうこともあります。
一方、JTAG ICEを使えば、リビルドの手間やリリース向けとの差異を気にすることなく、都度ブレークさせ、処理の流れや変数・メモリの状態を参照することができます。しかし、要因特定の難しい不具合解析となると、ステップ実行やコールスタック解析だけでは立ち行かなくなります。
【解決!】
トレースを使うことでリリース向けに近い環境且つ、プリント文等の埋め込み作業を必要とせず実行や変数遷移の流れを簡単に把握できます。また、要因特定の難しい問題の解析においても、現象が発生した際のトレースデータを取得し、ログを複数人で共有し解析できるため、原因突き止めまでにかかる時間を短縮できます。

■コードレビューでは障害に気づかないほど、アルゴリズムが複雑化
【課題】
ソフトウェアの不具合は、設計および実装工程で成果物として作り込まれ、その欠陥は次の工程にも影響を与え障害が発生します。
開発者の成果物(ソースコード)は、仕様書を元に実装作業を行い、工程の節目でコードレビュー審査が実施されます。
レビュー審査は、レビューする作業者が意識している問題点、レビューを受けるレビュアー視点による指摘やコメントによって欠陥を未然に取り除くことができます。
但し、開発システムの要求が膨らむと開発人数も増えて品質のばらつきが発生します。
例えば、以下のような項目をレビュー審査で特定できない場合は、潜在的な欠陥が実装されることになります。
・タスクやクラス処理インタフェース仕様に対する開発者の理解不足による不整合
・複合化した並列処理での、共有資源の同期/排他制御の手順/優先順位の曖昧さ
【解決!】
adviceXrossトレースモデルをご利用頂くと、明確化されてない曖昧な箇所、インタフェースの不整合な箇所のプログラミングに注目した実行履歴のデータを取得することができます。
トレースデータを用いれば、レビュー審査の課題となっている箇所について、単体テストや結合テストの早期段階で欠陥リスクの可能性を検証でき、潜在的な欠陥の除去に繋がります。


■ソースコードの可読性の悪さ(冗長的な関数の定義、消し忘れのレガシーコードの影響)
【課題】
現在の組込みソフトウェアでは、設計品質向上のためのモデリング技術、機能追加や保守性の改善のためのオブジェクト指向プログラミング・SOLID原則など、優れたコードが生成される環境が存在しています。
組込み開発のプログラム規模が増大し、短納期生産を追求される開発現場では、ロジックが類似する既存ユースケースのコードの再利用が必須となります。
既存コードの共通化・再利用では、前任者のアルゴリズムの組み方や出荷済みコードを正しく理解する必要があります。
既存ユースケースで再利用するためには、設計成果物(ドキュメント、ソースコード)の質が重要となりますが、ユースケースによっては、高品質な設計・プログラミング開発状況下では制作されていない設計成果物かもしれません。
例えば、「既存ソースコードの可読性が悪く設計ドキュメントとの整合性が取れない」、「実行モジュールが正しく動くことを重要視するために冗長的な関数定義や不要なレガシーコードが存在する」といったことも起こりえます。
【解決!】
設計成果物の理解が困難な場合は、再利用するコード・共通化コードのソフトウェアをadviceXrossトレースモデルで動作解析することにより利用前に成果物を精査することができます。
ソフトウェアの動的解析は、実行履歴と合わせてカバレッジ機能で有効なコードであるかの確証(不要なコードの存在確認)が可能です。
命令・データトレースのログ情報を解析することで冗長な関数などの抽出、既存コードと設計ドキュメントの整合性を得るためのアルゴリズム分析などに貢献できます。

トレースデータをチャート化し視覚的に表示が可能な機能「ocdTRACE-VIEWER」が有効!
ocdTRACE-VIEWERは、ETM(PTM)やETBで取得したトレースデータを従来のトレースレポート機能に加え、実行結果を視覚的に確認(関数チャート表示・スレッドチャート表示・プロファイル・カバレッジ表示など)でき、従来のログ表示に比べてシステムの挙動を簡単に把握することができます。
また、プロファイル分析機能によって、システムの性能に影響が大きい関数(ホットスポット)を瞬時に明らかにします。チャートからブレークを貼れるため、俯瞰して見えた問題点に対しスマートにデバッグを開始することができます。

※ocdTRACE-VIEWERは、adviceXross ソフトウェアバージョンRev1.03から対応しています。
( adviceXross保守契約加入ユーザー様はadviceXrossサポートサイトからダウンロードが可能です。 )


■システムのパフォーマンスを上げるために
【課題】
「マルチコア化やSoC等の置き換えでプラットフォームのスペックアップをしたにも関わらず、想定したほどパフォーマンスが上がらない」、「製品リリース後の機能アップデートによってパフォーマンス劣化に繋がらないことの証明が必要」。このようなシーンでは、処理実行時間の計測や、処理性能に影響を与えるクリティカルパスの特定が必須です。
簡易的なデバッグ手法でも局所的な確認はできますが、全体を俯瞰して効率的に該当箇所を検出することは困難です。
【解決!】
adviceXrossのトレースは高精度の時間情報・大容量(8GB)のトレースデータ取得・関数レベルでのチャート表示に対応しています。関数チャートで処理の一連の流れを俯瞰して確認し、クリティカルパスを特定することが可能です。
また関数レベルで各処理時間を一覧化して表示することもできるため、ボトルネックとなる箇所を直感的に発見でき、効率的な確認・分析作業が可能です。

処理パフォーマンス分析とボトルネック調査への最適解!
「GlobalTimestamp」とadviceXrossから追加された「CycleCount」を利用することで、従来のタイムスタンプ情報に比べると、より高精度なタイムスタンプで実行履歴を刻むことが可能です。
また、adviceLUNA IIと比べ2倍に増えたトレース記録容量により、大まかなポイントを絞って取得したトレースログから、ボトルネックとなる処理を特定するといった解析が容易です。



※「adviceXross」JTAGモデルにトレースユニットを追加することで8GB大容量のトレースモデルとしてお使いいただけます。


製品の詳細ページはこちら
評価機無料貸出の詳細ページはこちら
お問い合わせはこちら

adviceXrossサポートはこちら


※ETM(PTM),ETBは、Arm Limitedの登録商標です。