RENESAS TOOL NEWS 2008年10月01日 : 081001/tn3
| 統合開発環境High-performance Embedded Workshop ご使用上のお願い
--ローカル変数の参照について-- |
High-performance Embedded Workshopの使用上の注意事項を連絡します。
High-performance Embedded Workshopは、コンパイラやエミュレータデバッガなどの
ソフトウェア製品にバンドルされています。
1. 該当製品
High-performance Embedded Workshop V.4.04.01までの全バージョン
2. 内容
ローカル変数を参照すると、アプリケーションエラーが発生する場合が
あります。
2.1 発生条件
以下4点の条件をすべて満たす場合に発生する可能性があります。
(1) 該当製品を以下のいずれかのデバッガ製品と組み合わせて使用している。
- SuperH RISC engineファミリ用シミュレータデバッガ
- H8SX, H8S, H8ファミリ用シミュレータデバッガ
- E8aエミュレータソフトウェア
- E8エミュレータソフトウェア
- E10A-USBエミュレータソフトウェア
- E10T-USBエミュレータソフトウェア
- E200Fエミュレータソフトウェア
- E6000Hエミュレータソフトウェア
- E6000エミュレータソフトウェア
(2) 構造体または共用体のメンバに400バイト以上の配列を宣言している。
(3) (2)項の構造体または共用体をローカル変数として定義している。
(4) (3)項の変数を以下のいずれかのウィンドウもしくは機能を使用して
参照している。
- スタックトレースウィンドウ
- ローカルウィンドウ
- ウォッチウィンドウ
- ツールチップウォッチ機能
- インスタントウォッチ機能
2.2 発生例
以下のように定義したローカル変数"lS"をスタックトレースウィンドウ、
ローカルウィンドウ、ウォッチウィンドウなどで参照すると、アプリケー
ションエラーが発生する場合があります。
------------------------------------------------------
struct Str {
short m_DataSize;
char m_Data[512]; /* 発生条件(2) */
};
main() {
struct Str lS; /* 発生条件(3) ローカル変数"lS"を定義 */
lS.m_DataSize = 512;
return;
}
-----------------------------------------------------
3. 回避策
(1) スタックトレースウィンドウおよびローカルウィンドウ
該当変数が定義された関数内にプログラムカウンタが指し示す位置がある
場合、スタックトレースウィンドウおよびローカルウィンドウは表示
しないでください。
(2) ウォッチウィンドウ
ウォッチウィンドウに該当変数を登録しないでください。
(3) ツールチップウォッチ機能
ツールチップウォッチ機能を使用して該当変数を参照しないでください。
(4) インスタントウォッチ機能
インスタントウォッチ機能を使用して該当変数を参照しないでください。
4. 恒久対策
次期バージョンで改修する予定です。