none
ブレークポイントで不思議な現象ブレークしてチェック後ブレークを終了したのに次の構文が実行させた RRS feed

  • 質問

  • データベースを読んで、該当の送信先のメールアドレスを送信する直前でブレークをかけて止めて、確認した後にデバッグを止めたのに次のメール送信(しかも大量に)が実行してしまった現象が確認されました。

    なぜデバッグをやめたのにブレークポイントの次の構文が実行されたのか不思議です。

    何か原因らしきものがありましたらお知らせください。

    2018年5月8日 1:39

回答

  • 質問の際は、あなたが何を作っていて(Windows Forms? WPF? ASP.NET Web Forms? その他?)、どういう環境なのか(OS, .NET, Visual Studio のバージョン、DB は何かなど)ぐらいは書きませんか?

    > なぜデバッグをやめたのにブレークポイントの次の構文が実行されたのか不思議です。

    過去 ASP.NET のフォーラムでの質問が多かったので ASP.NET Web アプリの話ではないかと想像してますが、その想像が当たっていれば、そういうことはありますよ。

    詳しくは以下の記事を見てください。

    [デバッグの停止] で止まらない
    http://surferonwww.info/BlogEngine/post/2010/08/31/Process-continues-even-after-aborting-debug.aspx

    2018年5月8日 2:55
  • プロセスにアタッチした場合、デバッグの停止を選んでも、元のプロセスは停止せずにそのまま実行を続けます。

    デバッグを中止する際プロセスも終了させたい場合は、「すべて中止」を選ぶとプロセスごと停止します。


    とっちゃん@わんくま同盟, Visual Studio and Development Technologies http://blogs.wankuma.com/tocchann/default.aspx

    2018年5月8日 2:51

すべての返信

  • 再現性はあるのでしょうか? もし、再現性があるのであれば、もう少し細かい手順をお願いいたします。
    通常は起きえないことですので、回答者側でも発生すれば、原因を調査しやすくなると思います。

    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年5月8日 1:55
    モデレータ
  • 質問文を読んでの直感ですが

    Visual Studioデバッガーはブレークするとローカル変数などを一覧表示します。その際、プロパティ値も表示してくれるわけですが、この機能を実現するためには裏でgetterメソッドが実行されています。getterメソッドの延長上で、めぐりめぐってメール送信の処理まで実行されてしまったのではないでしょうか?

    2018年5月8日 2:28
  • デバッグ実行で開始ではなく、プロセスにアタッチしていませんか?

    その場合、デバッグ終了ではプロセスからデタッチ(デバッグ監視をやめる)になるだけで、デバッグしていたプログラムは継続実行されます。


    とっちゃん@わんくま同盟, Visual Studio and Development Technologies http://blogs.wankuma.com/tocchann/default.aspx

    2018年5月8日 2:29
  • 何度実行しても起きます。

    メールアドレスはテスト用に3件にしてありますが。

    2018年5月8日 2:39
  • デバッグの停止をしていますがこれがデタッチになるのですか?
    2018年5月8日 2:42
  • これの意味が不明ですので該当の部分のソースを提示します。

                Dim query = From n In db.メルマガ
                            Where n.状態 = False And Not n.メルアド = "" Select n
                For Each item In query
                    'お客様へ送信
                    Dim err As String = common_mail.mailsend(mail_server, item.メルアド, mail_merumaga_kanri, tb_kenmei.Text, bdy, port, shop_password, shopmei)
                    If Not err = "" Then
                        msg_hassin.Text += "メール送信エラー=" + item.メルアド + " エラー=" + err + "<br/>"
                        ecnt += 1
                    Else
                        cnt += 1
                    End If
                Next

    以上ですが何かありますか。

    2018年5月8日 2:44
  • プロセスにアタッチした場合、デバッグの停止を選んでも、元のプロセスは停止せずにそのまま実行を続けます。

    デバッグを中止する際プロセスも終了させたい場合は、「すべて中止」を選ぶとプロセスごと停止します。


    とっちゃん@わんくま同盟, Visual Studio and Development Technologies http://blogs.wankuma.com/tocchann/default.aspx

    2018年5月8日 2:51
  • 質問の際は、あなたが何を作っていて(Windows Forms? WPF? ASP.NET Web Forms? その他?)、どういう環境なのか(OS, .NET, Visual Studio のバージョン、DB は何かなど)ぐらいは書きませんか?

    > なぜデバッグをやめたのにブレークポイントの次の構文が実行されたのか不思議です。

    過去 ASP.NET のフォーラムでの質問が多かったので ASP.NET Web アプリの話ではないかと想像してますが、その想像が当たっていれば、そういうことはありますよ。

    詳しくは以下の記事を見てください。

    [デバッグの停止] で止まらない
    http://surferonwww.info/BlogEngine/post/2010/08/31/Process-continues-even-after-aborting-debug.aspx

    2018年5月8日 2:55
  • まさにこの通りでした。

    開始オプションのネイティブコードにチェック入れてテストをした結果、

    ブレークしてデバッグの停止するとと次の構文が実行されませんでした。(デバッグの停止で止まる)

    なぜこんなことになるか理解しかねますが解決といたします。今後は注意しないといけないですね。

    ありがとうございます。

    2018年5月8日 3:42
  • あなたが何を作っていて(Windows Forms? WPF? ASP.NET Web Forms? その他?)、どういう環境なのか(OS, .NET, Visual Studio のバージョン、DB は何かなど)を書いてください。

    このフォーラムは情報交換・共有の場所として提供されているそうです。なので、このフォーラムに参加する以上、質問者さんにも情報提供に協力していただければと思います。

    2018年5月8日 4:21
  • すみませんでした。

    メルマガの作成中、asp.net forms、windows10pro、vs pro 2015

    dbはsqlexpressです。

    2018年5月8日 5:45
  • 情報提供をありがとうございました。

    何を作っているかとお聞きしたのは、Windows Forms or WPF or ASP.NET Web Forms or 他のどれを作っているかという意味でした。

    質問者さんが作っているのは ASP.NET Web Forms アプリで、私の想像は当たっていたと理解しました。


    • 編集済み SurferOnWww 2018年5月9日 1:34 誤字訂正
    2018年5月9日 1:02