「セクションの実行」​が実行されず,別セク​ションの文法エラーが​表示されて停止する

22 views (last 30 days)
Masato Saito
Masato Saito on 28 Mar 2024 at 6:12
Commented: Masato Saito on 28 Mar 2024 at 16:27
MATLAB R2022b Update 2, 64-bit をWindows11で使用しています.
エディタのエラーチェック機能が,エラーを警告しているmスクリプトがあります.
そのエラーのある箇所までの動作を確認したく,スクリプトを実行しても,実行されず,エラーが表示されて停止します.そもそもスクリプトに記述したコマンドが全く実行されていないようです(実行されればワークスペースに変数が保存されるはずですが,実行後もワークスペースは空です).
それではと,エラーを含む箇所より前の部分をセクションに区切り,そのセクションを選択した上で「セクションの実行」をしても,同じように,セクション内のコマンドは全く実行されず,当該エラーを出力して停止します.エラー箇所は別セクションにあり,当該セクションの中にはありません.セクションの実行がなされれば,ワークスペースに変数が保存されるはずですが,やはり保存されていないので,そもそも実行していないようです.セクションの区切り方を変えても同様です.
以前は,上記のような実行,セクションの実行をすると,エラー箇所の1行前まではコマンドが実行されて,エラーを吐いて停止していたと思います.セクション内にエラーがなければ,セクション内のコマンドを全て実行して停止していたと思います.言い換えると,上記のような問題が起きたことが無く,思ったような動作をしていました.
実行しようとしているコマンドにエラーが無くても,mファイルのどこかに対して,エディタがエラーを警告している場合,どのような実行もなされない仕様になったのでしょうか?
エラーを含む行をコメントアウトして「セクションの実行」を行った所,想定通り,当該セクションのコマンドが実行されました.
  2 Comments
Atsushi Ueno
Atsushi Ueno on 28 Mar 2024 at 11:38
Edited: Atsushi Ueno on 28 Mar 2024 at 11:55
「プログラムが動く前/後のエラー」の感覚は分かります。
例として「文の構造が成立しない場合」として for 文の終端 end を”endo"と誤った綴りに変えます。
disp "あれや"
for k = 1:2
disp "これや"
dispo "どれや" % 誤った綴り"dispo"にした
end
%% セクション区切り
すると、それより前のセクションに存在する誤り (disp 文を”dispo"と誤った綴りにした) が指摘される前にendoの方が怒られてしまいます。dispの実行結果も全く表示されていません。つまり、まだプログラムが1行も実行されない内からエラーが出てしまった状態です。endを正しい綴りに戻すとプログラムが実行されて、dispoのところでエラーが出ます。
disp "あれや"
for k = 1:2
At least one END is missing. The statement beginning here does not have a matching end.
disp "これや"
disp "どれや"
endo % 誤った綴り"endo"にした
この辺の体系的な知識は無いのですが、おそらくインタプリタの仕組みがそういうものなんだと思います。
Masato Saito
Masato Saito on 28 Mar 2024 at 16:27
コメントやコードを試していただきありがとうございます.
ファイル内にエラーがあると,セクション内のエラーの有無によらず,一切実行しない仕組みになっているようです.
デバッグ用のブレークポイントをつけようとしても「構文エラーのためブレークポイントを有効にできません」と表示されます.
以前はこうではなかったと思いますから,セキュリティが向上されたということでしょうか.
実行したいコードを反転させてf9で実行することはできるようです.

Sign in to comment.

Answers (0)

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!