「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@243) [高] [解決]
@243■ (#679) エディタがデバック中のプログラムと共倒れになる - canot (2009-04-30 12:33) /高 未処理
【症状】
なでしこエディタからプログラムを実行したとき
プログラム側がハングするとなでしこエディタ側もハングしてしまう

【再現方法】
vnakoやgnakoがフリーズするような致命的なコードを書いた
なでしこスクリプトを実行して、CPUをビジー状態にする

【要望】
1:実行したスクリプトとエディタのそれぞれのプロセスを完全に分離させる
2:デバックモードのなでしこスクリプトのプロセスをエディタから完全に制御可能な仮想環境上で走らせる
3:「実行行を追跡」の機能を見直す
(追跡、そもそもデバック機能が不安定なので正直使ってません)

【バージョン】1.519
【その他】
ハングした場合、新たにエディタを起動して停止ボタンを押すと脱出できる。
しかしその場合、停止ボタンを押したエディタがフリーズする。

(#681) たぶん似たような原因だと思いますが - NON (2009-04-30 20:32) /高 未処理
たぶん似たような原因かと思いますが、実行中に一時停止させて実行中の画面を表示させると、
「ステップ実行」か「続ける」を押さないとエディタに戻れなくなります。
実行位置のソース修正などがとてもやりにくいので改善していただければ幸いです。

(#734) COPYDATAが原因かと - パソコン大好き (2009-05-15 20:59) /高 未処理
エディタからの停止ボタンや一時停止ボタンを押すと、
実行中のプログラムにCOPYDATAを使ってメッセージが送られます。
ところがCOPYDATAというのはSendMessageで送られているがために、
受けた側が制御を返さないと送った側がフリーズするんですよね・・・

なでしこのソースを見たところ、上のメッセージを受けたランタイムは
"制御を返さずに"停止や一時停止を行っています。
だからデバッグウィンドウが表示されている間、エディタに戻れないのだと思います。

(#778) PostMessageでのコマンド送信を対応する? - クジラ飛行机 (2009-05-21 00:28) /高 調査中
パソコン大好きさんが指摘しているように、COPYDATAを介して、エディタとなでしこがデバッグ情報をやり取りするので、固まってしまいます。

デバッグメッセージのやり取り体系を見直して、PostMessage で通信するようにすれば、もう少し使いやすくなりそうですね。

基本的に現在やり取りしているのは、
・stop
・break
だけなので、簡単に直せそう。

ただし、COPYDATA で各種エディタマクロも実行しているので、
これを考慮すると、少し考えて直さないといけない感じです。

(#785) RE:PostMessageでのコマンド送信を対応する? - しらたま (2009-05-21 13:57) /高 調査中
SendMessageをSendMessageTimeoutにして、適当なタイムアウト時間を設定するだけでもいいような気がします。
少なくとも、共倒れになることは無いかと。
# WM_COPYDATAがSendMessageTimeoutで使えれば、ですが

(#792) COPYDATASTRUCT - パソコン大好き (2009-05-21 16:13) /高 調査中
確かlParam(COPYDATASTRUCT)が解放されてしまうといけないから、SendMessageを使ったように記憶しています。
http://yokohama.cool.ne.jp/chokuto/advanced/message/WM_COPYDATA.html
まあ、タイムアウト後にアクセスしないようにすればいいと思いますが。

(#810) r134でエディタがプログラムと共倒れになる問題を修正 - クジラ飛行机 (2009-05-22 22:35) /高 確認待ち
-なでしこエディタで停止ボタンを押した時にハングする可能性がある問題を修正(r134)(@243)

(#823) 確認しました - canot (2009-05-24 14:03) /高 解決
修正確認しました!
かなり安定したと思います。

デバッカ周りはこれからも洗練していってほしいです。
よろしくお願いします

(#679)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能