デバッガとは異なる視点でバグを発見する動的テストツール(動的解析ツール)!
今、動いているプログラムは「偶然」動いているように見えるだけかもしれません。プログラムの本当の動きは人間のイメージを越えていることがあり、デバッガを使用していても気づかないことがあります。CodeRecorderはプログラムの本当の動きを見える化することで、デバッガでは手に負えないような難しいバグを発見することができます。
ターゲットCPUに依存することなく、様々なシステムでお使いいただけるのも特長の一つです。※1
製品リリース間近になって、マレにしか発生しない不具合に遭遇し、原因を特定するのに試行錯誤しながら時間だけが大幅に過ぎていくような経験ありませんか?
CodeRecorderを使えば、再現性の難しいバグも簡単に発見でき、より品質の高い製品開発が行えます。
CodeRecorderは、ターゲット・プログラムの実行を記録、解析して、
などの機能が一台でできる新しい形のツールです。
関数の呼び出しを時系列でグラフ表示します。関数の呼び出し状態と実行時間が一目でわかり、意図しない呼び出しや、実行時間の長い関数を簡単に見つけることができます。 OSに手を加えずにRTOSやLinuxにも対応、システムコールの呼び出し、タスクやスレッドがどのタイミングで実行されているか把握できます。 グラフの拡大縮小が簡単にできるため、記録データ全体を確認することも容易です。また、関数の検索やマークを設定、2点間時間計測など、バグの発見に役立つ機能がそろっています。
動的メモリの使用状況を監視しグラフ表示します。メモリの確保や解放が一目でわかるので、異常なメモリ確保を見つけることが容易になります。また、メモリ・リークや多重解放などの異常ポイントを検出し、そのポイントからソース・デバッグを行うことも可能です。
変数の値の変化をグラフ表示します。変数値を見える化することで、バグの原因となりそうな突出した値を確認することができます。値の検索も簡単に行えますので、値が変更されたポイントを表示し、そのポイントからソース・デバッグを行うことも可能です。
テストによってソース・コードの何パーセントが通過したかを表示、テストの進捗状況を把握することができます。まだ通過していないコードを見つけ、そのテスト項目を追加することで、品質向上に役立てることができます。カバレッジ率を表示するカバレッジ・ウィンドウはソース単位や関数単位でのC0/C1カバレッジを確認できます。
カバレッジ・ウィンドウでカバレッジ率が低い関数を見つけた場合、その関数のどこが未通過か、ソース表示で確認できます。グレーで表示されているソース行の条件を確認し、通過させる条件をテスト項目を追加していけば、より強力なテストとなり、品質アップへつながります。
実機の動作中にプログラムの通過を確認できる、カバレッジ・モードを用意。ソース表示で通過した行は赤色にマークされますので、現在のテストでは未通過の場合、条件を変えてテストを行うことができます。カバレジ・ウィンドウのC0/C1カバレッジ率もリアルタイムに変化を確認できます。このモードではデータが膨大にならないため、長時間のテストも安心して行えます。
関数ごとの実行時間や呼び出し回数、最大、最小、平均の実行時間を計測し表示します。呼び出している子関数の割り合いを円グラフで表示することや、関数のコールグラフから、ボトルネック関数を見つけることも可能です。また、最大時間、最小時間を記録したポイントをグラフ系のウィンドウに表示させることができ、そのポイントからソースを追跡することも可能です。
実際にどの関数が何%改善されたかが一目で分かります。改善を行ったつもりで逆に改悪してしまった関数もレポートされますので、プログラム全体でのパフォーマンスアップ状況を把握できます。
計測用のテスト・コードはソース・ファイルを解析して自動的に埋め込みます。テスト・コードを埋め込んで影響が出る場合は、関数単位で外すことができます。(Cコンパイラ:C89/C99/C++11に対応)
パソコンに接続されたWebカメラを使用して、レコード・パケットの記録と同時に動画撮影が可能になりました。
この機能により、動きのあるターゲット・システムの動画とプログラムを同期して確認することができます。例えば表示系やロボットなどの動きをカメラで撮影しておけば、バグが発生したポイントを動画で確認し、そのポイントを関数レベルで追跡することが可能になります。
関数スタック、関数遷移、プロセス遷移のウィンドウには、動画のサムネイルが表示されます。コマ撮り画像と関数の変化を同じウィンドウで確認することができます。
ターゲットのRAMを使用してレコード・パケットを取得できるモードを追加しました。
RAMがあればGPIOなどのハードウェア・リソースを必要としないため、簡単にデータが取得できます。
CodeRecoreder E2をコマンドで起動する場合の起動オプションを追加しました。
テスト・コードの埋め込みや、レコード・パケットの取得、レポート出力などの一連の操作がコマンド・ラインで行うことができます。
レポート出力は全てCSV形式となっていますので、過去のレポートとの比較が簡単にできます。
これを利用すれば外部ツールでの、テストの自動化などに応用できます。
カバレッジ・モードの取得開始時はカバレッジの表示を初期化していましたが、初期化しない設定を追加しました。
カバレッジ・モードの前の表示から継続した取得が可能になりますので、テストしたコードを重複せずにテストを進めることができます。
最大サンプリング周波数100MHzの簡易ロジック・アナライザ機能を追加しました。
GPIOプローブを使用して最大4チャンネルのデジタル信号波形が表示可能です。
リアルタイムに波形表示が可能なため、ターゲットを操作しながら信号の確認が可能になります。
また、取り込みを停止した後は、プログラムと同期しながら波形を追跡できるので、ソフトとハードの関連性をデバッグすることが容易になります。
高速/中速のテスト・コードを自動的に使用して、全体的なテスト・コードのオーバヘッドを短縮できるモードを追加しました。
このモードを使用することでオーバヘッドが最大で従来の半分ぐらいに短縮されます。
オーバーヘッドの影響で動作が不安定になっていたプログラムも、このモードを使用することで動作する可能性が高くなります。
変数チャートでfloat/double型変数の表示に対応しました。
float/double型の変数を登録すると右側のスケールが浮動小数点の表示に切り替わります。
また、グラフの表示色とマーカの形状を変更可能にしました。
プロファイラ(実行時間/周期時間)の詳細表示をCSV形式のファイルに保存できるようにしました。
詳細表示の高速化も対応しています。
レコード・パケットの出力時間を取り除いて、実行時間を補正するモードを追加しました。
よりリアルな実行時間を計測したい場合はこのモードを使用してください。
レコード・パケットの出力フォルダが設定可能になりました。
従来はプロジェクト・ファイルのフォルダに固定されていましたが、この設定を行うことで任意のフォルダに出力することができます。
プロジェクト・ファイルのディスク容量が足りない場合、この設定を行うことで回避できます。
報告書の作成フォルダはデフォルトでプロジェクト・ファイルのフォルダのReportsに作成されましたが、これに日時のフォルダを追加して、報告書が上書きされないように対応しました。
高速テスト・コードと中速テスト・コードは、従来のテスト・コードの転送速度に対して中速テスト・コードで1.5~2倍、高速テスト・コードにおいては実に2~3倍の速度で転送することが可能となりました。テスト・コードの転送時間時間が少なくなったことにより、実実行時間により近い測定が可能になりました。また、今までテスト・コードの転送速度がネックとなり埋め込むことができなかったクリティカルな処理関数も、テスト対象にできる可能性が広がりました。
高速/中速テスト・コードを有効に利用するために、[埋め込み負荷ランキング]を表示する機能を追加しました。この機能は取得したレコード・パケットから負荷の高いテスト・コードを抽出し、高速/中速へ設定を変更することができる機能です。オーバーヘッドの高いテスト・コードを試行錯誤で除外しなくても、実測値をもとにランキング表示されたものを見ながら負荷の高い埋め込みコードを高速/中速テスト・コードに置き換えることが可能となります。
周期タイムアウト検出は、特定のポイントが周期的に呼び出される場合、その周期が設定時間を超えたことを検出する機能です。通常のテスト・コードよりも高精度な10ns単位での計測が可能で、タイムアウトした場合に取り込みを停止させることや、マークを設定することができます。これにより、設定時間を超えた場合のプログラムの動作を素早く検証することが可能となります。
2点間タイムアウト検出は、2点間の実行時間が設定時間を超えたことを検出する機能です。通常のテスト・コードよりも高精度な10ns単位での計測が可能で、タイムアウトした場合に取り込みを停止させることや、マークを設定することができます。これにより、設定時間を超えた場合のプログラムの動作を素早く検証することが可能となります。
変数監視機能は、特定の変数の値を監視し、条件一致を検出する機能です。条件の指定には値の一致、不一致、範囲内、範囲外の設定が可能で、最大4つまで条件を設定することができます。条件が一致したときに取り込みを停止させることや、マークを設定することができます。レコード・パケットの取得ダイアログで設定変数の値をサンプリング表示することも可能です。
接続してるデータの本数が 1ビットまたは2ビットの場合、未使用のPD3信号線を外部入力信号として使用できます。立ち上がり、立ち下がりの条件設定が可能で、条件一致で取り込みを停止させることや、マークを設定することができます。また、EXTCNコネクタにエクスターナル・プローブを接続することでBRKINを外部入力信号として使用できます。パルスを入力することで取り込みを停止させることや、マークを設定することができます。これらの入力信号はレコード・パケットの取得タイミングとは関係なく非同期に入力されますので、正確な入力時間が得られます。
当社製JTAGエミュレータPALMiCEとEXTCNコネクタに専用ケーブルで相互に接続して、タイムアウトや変数監視の条件一致でPALMiCE側を停止させることが可能です。
*この機能は、PALMiCE3 ARM および PALMiCE4 のみ使用可能です。
レコード・パケットの取得ダイアログにデータの取り込みに関する、さまざまな情報を表示する機能です。レコード・パケットの詳細な取得状況や、タイムアウト機能、監視機能のステータスが表示されます。
関数スタックや関数遷移などのウィンドウにタイムアウト監視や変数監視、外部信号入力などのマークが表示されるようになります。右クリックメニューで「トリガ」を選択すると表示できるマークを選択することができます。
変数チャートに変数値をCSV形式で保存します。保存したファイルを表計算ソフトなどでグラフ化することができます。
プロジェクト・ウィンドウの[コンパイル・ログからファイルを追加]の機能で、「EW RL78」、「CS+ RL C」、「LAPIS CCU8 C」に対応しました。
信号波形表示に、ズームアウトして全体を表示する[全表示]と、連続して波形を取得する[連続表示]の機能を追加しました。
ボード名 | メーカ名 CPU名 |
確認済み 接続方法 |
ボード・メーカ名 |
---|---|---|---|
ZedBoard-7000 | Xilinx Zynq-7000 SoC |
GPIO | AVNET |
CY8CKIT-149 PSoC 4100S Plus Prototyping Kit |
Cypress PSoC 4100S |
GPIO | Cypress Semiconductor |
F2MC-16FX(MB96F615) | Cypress F2MC-16FX |
GPIO | Cypress Semiconductor |
SAMV71 Xplained Ultra | Microchip Technology SAMV71Q21 |
GPIO | Microchip Technology |
EVK-MIMX8MP | NXP Semiconductors i.MX 8M Plus |
GPIO | NXP Semiconductors |
8MNANOD4-EVK | NXP Semiconductors i.MX 8M Nano |
GPIO | NXP Semiconductors |
8MMINILPD4-EVK | NXP Semiconductors i.MX 8M Mini |
GPIO | NXP Semiconductors |
MCIMX8M-EVKB | NXP Semiconductors i.MX 8M Quard |
GPIO | NXP Semiconductors |
MCIMX6UL-EVK | NXP Semiconductors i.MX 6UltraLite |
GPIO | NXP Semiconductors |
i.MX RT1064 Evaluation Kit | NXP Semiconductors i.MX RT1064 |
GPIO | NXP Semiconductors |
QorIQ LS1046A Reference Degisn Board (LS1046ARDB) | NXP Semiconductors LS1046A |
GPIO | NXP Semiconductors |
FRWY-LS1046A DEVELOPMENT PLATFORM | NXP Semiconductors LS1046A |
GPIO | NXP Semiconductors |
Blue Gecko Module Wireless Starter Kit | Silicon Laboratories BGM111 |
GPIO | Silicon Laboratories |
EFM32GG11 Giant Gecko Starter Kit | Silicon Laboratories EFM32GG11 |
GPIO | Silicon Laboratories |
STM320518-EVAL | STMicroelectronics STM320518 |
GPIO | STMicroelectronics |
STM32MP15X-EVAL | STMicroelectronics STM32MP157C |
GPIO | STMicroelectronics |
TMDS64GPEVM AM64x General Purpose Evaluation Module (GP EVM) |
Texas Instruments AM6442 |
GPIO | Texas Instruments |
TMDX654GPEVM AM65x evaluation module (EVM) |
Texas Instruments AM6548 |
GPIO | Texas Instruments |
AM574X Industrial Development Kit | Texas Instruments AM5748 |
GPIO | Texas Instruments |
66AK2Gx (K2G) Evaluation Module | Texas Instruments 66AK2G02 |
GPIO | Texas Instruments |
AM1808 EVM | Texas Instruments AM1808 |
メモリバス | Texas Instruments |
Armadillo-500 | NXP Semiconductors i.MX31 |
GPIO | アットマークテクノ |
Armadillo-800 | ルネサス エレクトロニクス R-Mobile A1 |
GPIO | アットマークテクノ |
Armadillo-840/A | ルネサス エレクトロニクス R-Mobile A1 |
GPIO | アットマークテクノ |
CKB-1808 | Texas Instruments AM1808 |
メモリバス GPIO |
コンピューテックス |
CKB-3352 | Texas Instruments AM3352 |
メモリバス GPIO |
コンピューテックス |
CKB-RZ/A1H | ルネサス エレクトロニクス RZ/A1H |
GPIO | コンピューテックス |
CEV-RZ/A1L | ルネサス エレクトロニクス RZ/A1L |
メモリバス | コンピューテックス |
RX62N8 評価ボード | ルネサス エレクトロニクス RX62N |
GPIO | コンピューテックス |
SH7216F 評価ボード | ルネサス エレクトロニクス SH7216F |
メモリバス GPIO |
コンピューテックス |
ML62Q1267 Reference Board | ラピステクノロジー ML62Q1267A |
GPIO | ラピステクノロジー |
EVALUATION KIT EK-RA6M3 | ルネサス エレクトロニクス RA63M |
GPIO | ルネサス エレクトロニクス |
Renesas Starter Kit+ for RX65N-2MB | ルネサス エレクトロニクス RX65N |
GPIO | ルネサス エレクトロニクス |
Renesas Starter Kit for RL78/G13 | ルネサス エレクトロニクス RL78/G13 |
GPIO | ルネサス エレクトロニクス |
RSK RZ/N1D CPU Board + RSK RZ/N1 Expansion BOARD |
ルネサス エレクトロニクス RZ/N1D |
GPIO | ルネサス エレクトロニクス |
対応OS | : 日本語 Windows 11/10/8 (64bit /32bit) |
---|---|
HDD | : データ取得用に数十GB以上の空きが必要 |
USB | : USB3.0 |
GPIO 2本だけでつながる!