Linuxの仮想アドレスを独自に解析しアプリケーションのデバッグを可能にします。複数のアプリケーションを切り替えてのデバッグや、すでに実行されているアプリケーションに対してアタッチしてデバッグすることができます。
現在、実行中のアプリケーションへアタッチしてデバッグすることが可能です。
デバッグ対象のプロセスから呼び出された場合のみドライバ内でブレークさせることができます。また、デバッグ対象のアプリケーションをスリープさせることにより、そのアプリケーションだけを停止させることもできます。さらに、特定プロセスの停止により、システム全体を同期させて停止する必要がある場合もあるため、何れか切り替えてのデバッグも可能です。スレッドもまた、プロセス同様のデバッグが可能です。
本来ROMの固定アドレスにマッピングされているXIPアプリケーションをRAM上に自動展開することによりデバッグを可能としています。また、prelinkを通した後はアドレスが固定されますが、それらのライブラリのデバッグも可能です。
プロセスの起動、終了を監視し、アプリケーションの起動時にはmain関数からのデバッグを可能にします。通常Linuxではアプリケーションはカーネルがメモリに展開、実行するため、main関数からデバッグするのが困難でした。また、プロセスの終了時にはメッセージでプロセスが終了したことを知らせます。
共有ライブラリはアプリケーションと異なるアドレスに動的にマップされるため、アプリケーションとは違ったアドレス解決が必要になります。この問題をクリアし共有ライブラリの変数参照やプロセスIDを認識したブレークの設定を可能にします。
セグメンテーションフォルトなど致命的なシグナルが発生するとアプリケーションは終了して、そのプロセスは消滅するため、再現性が低い不具合の場合にはデバッグ追跡するのが困難です。 シグナル・トラップ・ブレーク機能は、致命的なシグナルが発生したときにアプリケーションをブレークさせ、問題点がどこにあったかを追跡するのに役立ちます。
JTAG経由でターゲット側のファイルアクセスが可能です。LANが実装されていないターゲットにファイルを転送する場合に役立ちます。ファイルの削除やディレクトリの作成も可能です。
カーネルのC言語デバッグはもとより動的なドライバであるローダブル・モジュールのデバッグも可能です。ローダブル・モジュールは先頭関数からデバッグすることができます。
Linuxカーネルによってロードされるデバイスドライバ(ローダブル・モジュール)はデバッガがロードしたアドレスを解決して、先頭関数からデバッグすることができます。
Linuxアプリケーションのパフォーマンスや品質をアップするため、プロセスの実行負荷の把握やメモリの使用状況を確認することができます。
大容量トレースメモリを活用すれば、プロセスやスレッドの遷移状況や実行履歴、関数ごとのパフォーマンス測定など詳細な分析をすることができます。消滅したプロセスについても独自の手法により解析可能です。
プロセスの遷移状態をグラフィカルに表示します。表示を切り替えることによってプロセスごとのCPU占有率をグラフで表示することができますので、システム全体に対してのプロセスの占有率が分かります。
メモリの確保、解放関数(malloc,realloc,freeなど)を監視し、メモリの確保と解放がどのように行われているかをグラフで表示します。アプリケーションが最終的にメモリの解放漏れをしていないかを検出する機能がありますので、たとえば解放漏れが原因で時間がたてば不安定になるような不具合の検出に役立ちます。
SMP-Linuxは1つのLinuxシステムで複数のCPUを並列処理させるための高度な仕組みを備えたLinuxです。CPUごとのスケジューラを採用しているSMP-Linuxでは、負荷バランスが大きく崩れるとプロセスのCPU割り当てを調整します。(プロセス・マイグレーション)その為、ランダムに発生するCPU間のプロセス・マイグレーションを監視し、デバッグ対象のアプリケーションがどのCPUで動作しているかを常に把握することで、SMPで動作するアプリケーションのデバッグを可能としました。
アプリケーションを実行しているCPUが他のCPUに割り当てを移住(プロセス・マイグレーション)されたとしても、ステップ/トレース/ソフトウェア・ブレーク等、非SMP-Linuxと変わらない操作感でのデバッグが可能です。
プロセス遷移表示では同時実行している全CPUの動きを重ねて表示させることで、各CPUの競合やデッドロックなどSMPシステム特有の問題を一目で把握することができます。
プロセスの実行状態をCPU単位にグラフ表示することで、折れ線グラフでは解りにくいアプリケーションのマイグレーションやパフォーマンスを容易に確認することができます。
機能名称 | ICE単体 移行前 |
PALMiCE4 ARM Linuxデバッグ・モード |
PALMiCE4 ARM64 Linuxデバッグ・モード |
---|---|---|---|
実行制御 | ○ | ○ | ○ |
メモリやIO、レジスタの参照/変更 | ○ | ○ | ○ |
変数の参照/変更 | ○ | ○ | ○ |
スタック・トレース | ○ | ○ | ○ |
リアルタイム・トレース | ○ | ○ | ○ |
プロセス対応リアルタイム・トレース | × | ○ | ○ |
ローダブル・モジュールのデバッグ | × | ○ | ○ |
Linuxアプリケーションのデバッグ | × | ○ | ○ |
マルチプロセス、マルチスレッド対応 | × | ○ | ○ |
シグナル・トラップ・ブレーク | × | ○ | ○ |
プロセス・トレース | × | ○ | × |
メモリ・プロファイラ | × | ○ | × |
システム情報表示 | × | ○ | ○ |
ファイル転送機能 | × | ○ | × |
各種ディストリビューションの対応を行っております。
PALMiCE4 ARMの対応Linuxバージョンは4.x、5.x以降となります。
PALMiCE4 ARM64の対応Linuxバージョンは5.4以降となります。
Linuxサポートパッケージ(LSP)はお客様のシステムに依存度が高いLinux開発環境で予想される種々のテクニカルサポートを 行うと共に、安心してスムーズな開発を行って頂く事を目的としたサポート制度です。このLSPは、CSIDEの年間サポート制度とは別に用意させて頂いております。