RL78G14でプログラムを作成中、マイコンが動作異常(リセットがかかったようなな感じ?)になるときがあり調査したところ、以下のコードが原因であることがわかりました。
#include "stdio.h"
char title[] = "xxxxxx"; // 何らかの文字列指定
char debug_send[128];
main(){
sprintf(debug_send,"%s",title); // このコードが原因でたまにマイコン動作が異常になる
....
}
もともとがtitleからdebug_sendへ文字列に変換し格納することが目的だったため、strcpyと入れ替えたところ現象は発生しなくなりました。
E2 Liteでデバッグしているのですが、デバッグ中は発生せず、ROMに書き込んだ後たまに発生することから内部でどのようなことになっているかはっきりしていません。
同じような現象、および、明確にこのコードが悪いという情報はありますでしょうか?
ビルドバージョン 1.06.00/1.08.00
最適化レベルはデバッグ優先
> 以下のコードが原因であることがわかりました。
絞り込んだ箇所が原因とも限らないと思いますが、どうしてそこが原因とわかりましたか?
> char title[] = "xxxxxx"; // 何らかの文字列指定
実際のプログラムに「何らかの文字列指定」とコメントは書かないと思うので適当に改変されてるのだと思いますが、改変され削られた部分が原因の可能性もありうるので
> 同じような現象、および、明確にこのコードが悪いという情報はありますでしょうか?
というのは質問として厳しいと思います。
> ビルドバージョン 1.06.00/1.08.00
この数字は何を言われてますか?