• 締切済み

無限ループでDebug.Writelineしてしまい、VB2005が応用しません(>_<)

VB2005 ExpressEditionです。 先ほど、間違えて無限ループ内でDebug.Writelineメソッドを使ってしまい、プログラムのデバッグ中止ボタンを押せたにも関わらず、いつまでもイミディエイトウィンドウに文字列がトレースされます。かれこれ30分ぐらい経ってもまだ終わらず、ビジー状態で次の作業に移れません。 プログラムを強制終了するしかないでしょうか? 保存していない変更が破棄されると困るのですが、強制終了しても作業時の状態をを復元する機能などあるでしょうか?

みんなの回答

  • OldBoy65
  • ベストアンサー率60% (3/5)
回答No.2

キーボード上に BREAK キーがありますので、それで 処理を中断してください

new_hope
質問者

お礼

ご返信、だいぶ遅くなりすみません<(_ _)> Breakキーを押しても変化が見られませんでした。

回答No.1

うーん。 VS 2008で以下のようなソースを書いてみたけど, 普通に止まるなあ・・・ 'プロジェクト名:ConsoleApplication1 Module Module1 Sub Main() Dim i = 0 Do While i < 1 System.Diagnostics.Debug.WriteLine("ほげ") Loop End Sub End Module 俺のマシンはタスクマネージャじゃなくてProcess Explorerだから タスクマネージャで出来るかわからないが, vbexpress.exeを終了させずに ConsoleApplication1.vshost.exeだけを 強制終了させてみるとか

new_hope
質問者

お礼

ご返信、だいぶ遅くなりすみません<(_ _)> その時は、強制終了するしかありませんでした。 作ったプログラムを強制終了させるとVB自体も終了してしまいます。 また、そもそもプログラム自体は終了していて、 VBがイミディエイトウィンドウに出力する量が多いせいでビジーになっているという感じです。 ともかく今後こういうふうになら無いように対処したいと思います。

関連するQ&A

  • 無限ループ対策

    プログラミングのデバッグ時、無限ループに入ってしまい、プログラムを強制終了することもままならなくなることがあります。 CPUのリソースを完全に使っているために、こちらの入力を受け付けなくなると思うのですが、 マルチCPU環境ではどういった状態になるのでしょうか? 無限ループは起こらないのでしょうか? さらに、デュアルコアCPUの場合はどうなのでしょうか? 無限ループのもどかしさから開放されるならPCを新調しようと思うのですが、 何かご存知の方教えてください。よろしくお願いします。

  • VB上で実行中の無限ループの止め方

    今まで、CUIベースのBASICでのプログラムの経験はあるのですが Visual系のBASICは初心者です。 原因はわかっているのでプログラムの修正はできるのですが VB上でコンパイルして実行したときに無限ループに陥ってしまって どうにもプログラムをとめられなくなります。 そんなことがないように、実行前に全てのプロジェクトを保存して いますので、そんなに実害はないのですが、どうすればとめられるのでしょう・・ 今現在は、タスクマネージャーから強制終了させています。

  • Win98 + Excel97 + VB での無限ループの強制終了

    表題の件なのですが、 例えばエクセルシートの適当な位置にボタンを配し、以下のようなソースを組んだとします。 Private Sub CommandButton1_Click() s=0 Do While (s<15) s = s + 1 Loop End Sub もしも誤って s=s+1の行をコメントにしたら無限ループとなり エクセル及びVBが【実行中】のまま固まってしまいますよね? この場合「タスクマネージャ」を使って強制終了しています。 当然エクセルもVBもタスクから消滅してしまいます。 ファイルを保存していない時にこの状態になるとかなりブルーです。 作成途中のプログラムを残せるようなプログラムのみ終了させる方法 または 無限ループ内に「ループから強制的に抜け出すようなアクション」の埋め込み方法(または以下の意味は解りますかね…(汗)) 等、ありましたら回答よろしくお願いします。 それともこのような状態になったら「ソースを作ったあなたが悪い!最終保存以降の編集内容はあきらめよ」と言うことなんでしょうか? ちなみに論点はForNext等への変更ではなく あくまで「誤って表記してしまった無限ループからの脱出」です よろしくお願いします。

  • 無限ループ中にある任意のキーを押すと抜けるコードを作りたいのですが・・・(VB6です)

    無限ループを動作中にあるキー(例えば[Ctrl]+[c])を押すと、そのプログラムを抜けて終了するコードを作りたいのですが、どなたかご教授いただけませんでしょうか?

  • 無限ループを使う意味

    マイコンボード(M16)でLCDとトグルSW8個が接続してありSWの状態を2桁の16進数でLCDにリアルタイム表示する必要があります。そのサンプルプログラムを見ているのですが、for(;;)の無限ループを組んでSWデータを読み込んでLCDにデータを送っているのですがどうして無限ループを用いるのか分かりません。詳しく説明して頂けるようお願いします。

  • VBScriptの無限ループ動作で簡単終了方法

    お世話になります。 私のPCでは、監視のために無限ループ動作のVBScriptが三つほど動いています。それでメンテナンスでどれかの一つを停止(強制終了)しようと、タスクマネージャーにアクセスしてもイメージ名が皆同じで、区別がつかず困るときがあります。 そこで、最初からこの無限ループ動作のスクリプトに仕込みをしておいて、いつでも簡単に終了させる方法などありますか。検索してもまったく見つかりませんでしたので、相談させて頂きました。

  • 無限ループで暴走

    自分の力量が足らずしょっちゅうcgiで誤って無限ループを作成し自分のPCの仮想サーバでテスト実行してしまいます 案の定、暴走・・・ Apachi2を終了してもperl.exeが処理を続けていてCPU使用率が100%のままでタスクマネージャーでperl.exeを強制終了しようとしてもアクセス拒否されてしまいます 仕方が無くいつもPCを再起動しいます PCを再起動せずにCPU使用率を下げる方法はありますでしょうか?

    • 締切済み
    • CGI
  • ループを途中で抜けたいのですが。

    無限ループさせているwhileやfor文などで、 何かのキーを押すとループを抜けるように設定したいのですが可能でしょうか? (scanfやcinなどをループの中に組み込まずに。ctrl+Cも無しで。) (あと、フォーム上ではなくコンソール上で。) 多分説明不足なのでもうちょっと詳しく。 たとえば、 while ( i != 1 ){ j += 1; } の様な無限ループを設定したとして、 本来なら if (j > 100 ){ break; } とか、 while文の中に scanf ( "%d" , &i ); 等を入れて終了条件を満たさせるべきですが、 そうではなく、ひたすら無限ループを続けているところにEscキーを押すとループから脱出するようなプログラムを作ってみたいのです。 そういうプログラムは可能でしょうか? どうかご教授下さい。 使用コンパイラ:Visual C++ 2008 Express Edition

  • 無限ループ中におけるマウスイベント処理について

    import java.awt.*; import java.awt.event.*; //他のインポートは省略。 public class Test extends Frame {  public static void main(String[] args) {   new Test();  }  public Test() {   //フレームの基本設定は省略。   enableEvents(AWTEvent.MOUSE_EVENT_MASK);   show();   mainLoop();  }  private void mainLoop() {   while(true) {    //処理は省略。   }  }  public void processMouseEvent(MouseEvent e) {   //処理は省略。  }  //他のメソッドは省略。 } こんな感じのプログラムを作ったのですが、mainLoop メソッドの無限ループにはまって何もできなくなるはずが、 なぜか普通にマウスイベント処理ができたので不思議に思っております。 VB などで同じようなプログラムを作るときは無限ループの最後に DoEvents でイベント処理をさせております。 言語仕様なのか自分の使ってる PC や OS など環境のせいなのが気になっております。 Java 言語に詳しい方、もし何かご存知でしたら教えて下さい。 (なお、省略した部分は普通の計算処理とかなので影響はないと思われます。)

    • ベストアンサー
    • Java
  • 時間がかかり過ぎたプロセスをキルする方法

    system関数を用いて、ループ内で外部プログラムを連続的に実行しています。ところが、時々、無限ループに近い状態に陥ってしまうデータがあるので、時間制限を設けて、その時間内に終了しない場合には、そのプロセス(外部プログラム)を強制終了させたいのです。 また、もし、強制終了させた場合には、それと分かるように戻り値を返してもらえると、なお良いです。 この仕組みを実現する手法、もしくは、モジュール等を教えて頂けないでしょうか。

    • ベストアンサー
    • Perl

専門家に質問してみよう