none
エディットコンティニュー時のエラー表示について RRS feed

  • 質問

  • VisualStudio2008を使用してC++言語で開発しています。
    VisualStudioはエディットコンティニュー機能があり、その機能は動作します。
    例えば、ブレークポイントで中断、プログラム編集、続行の操作により自動的にエディットコンティニュー(コンパイル→続行)は可能です。
    しかし、その操作の途中でプログラム編集にてエラーをしてしまった場合に、そのエラー表示はどこに表示されるのでしょうか?
    出力ウィンドウかエラー一覧ウィンドウに表示されると思っていたのですがどちらにも表示されません。
    2009年6月19日 1:33

回答

  • VS2008SP1にて、Win32コンソールアプリケーションプロジェクトを新規に作成し、_tmainの先頭でブレークをかけてデバッグ実行をして、ブレークした後に下記のようなコードにしました。

    int _tmain(int argc, _TCHAR* argv[])
    {
     int j = 200, k;
     int k;
     return 0;
    }

    kが二重定義になるようにして、F5キーを押すとコンパイルエラーが発生したのでどうするかと問われるダイアログが出ましたので「編集」ボタンを押してIDEに戻ります。
    このとき、出力ペインの出力元の表示がビルドのところで「testconsolewin32.cpp(9) : 'k' の宣言を確認してください。」というようにエラーが表示されました。


    しかし、次のように、構文をおかしくした場合にはエラーは出力ウィンドウに提示されないようでした。

    int _tmain(int argc, _TCHAR* argv[])
    {
     int j = 200, k;
     int l = 12.3;
     int m = 1 ? 1 ? 2;
     return 0;
    }


    そこで、Connectサイトを調べてみたところ、USのConnectに不具合が登録されており、"next release"で修正済みとのことでした。
    VS2010Beta1での再現テストは行っていませんが、もしかしたら修正されているかもしれません。
    https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=334191


    VS2008で打つ手はないかと思って、support.microsoft.comで英語で検索したところ、下記のKBがヒットしました。
    http://support.microsoft.com/kb/963696/en-us

    Hotfixが出ているらしいので、支障があるのであればリクエストしてみると良いかもしれません。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク sosu 2009年6月25日 5:28
    2009年6月23日 14:21
    モデレータ

すべての返信

  • そもそも私はこの機能を全く使わないので言われて初めて確認して見たんですが、
    基本的にこの機能ってちょこっと直して様子を見たいが基本だと思うのでエラーの内容表示は無いのではないかと
    言う気がします。実際にやってみましたがエラー表示に相当する物は発見できませんでした。

    基本的に動作していたものを弄るわけなのでエラーになるとしたら修正を入れた場所限定になるはずで
    その場所を見れば、大体わかるでしょと言う事なのではないかと思います。
    というかエラーメッセージが出ないと分からないようなエラーが出るような規模の修正を
    行う事を想定していないのではないでしょうか。値をちょっと変えて動作を見てみたいとか
    そういうレベルの修正であれば、そこまで分かりにくいエラーが出るとは考えにくいですし。

    個人的にはちゃんと修正する必要があるのであれば、エディットコンティニューを使うのではなくて
    デバッガを止めて修正、リビルドするのが正解ではないかと思います。

    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。
    2009年6月19日 7:33
  • ご回答ありがとうございます。

    デバッグの方法論については仰るとおりです。

    そもそも、なぜこのような質問をしたかと言いますと以前のVC(確認済みはVC6)にも同じ機能があります。
    以前のVCではエラー表示していたのにVS2008にて表示しなくなったので、インストールの失敗かVS2008の設定ミスを疑っていました。
    そこでインストールや設定に関するミスを指摘もらうつもりで質問した次第です。

    もしPATIOさんも同様の現象が発生するのならVS2008のバグを疑った方が良いかもしれませんね。

    2009年6月23日 8:01
  • VS2008SP1にて、Win32コンソールアプリケーションプロジェクトを新規に作成し、_tmainの先頭でブレークをかけてデバッグ実行をして、ブレークした後に下記のようなコードにしました。

    int _tmain(int argc, _TCHAR* argv[])
    {
     int j = 200, k;
     int k;
     return 0;
    }

    kが二重定義になるようにして、F5キーを押すとコンパイルエラーが発生したのでどうするかと問われるダイアログが出ましたので「編集」ボタンを押してIDEに戻ります。
    このとき、出力ペインの出力元の表示がビルドのところで「testconsolewin32.cpp(9) : 'k' の宣言を確認してください。」というようにエラーが表示されました。


    しかし、次のように、構文をおかしくした場合にはエラーは出力ウィンドウに提示されないようでした。

    int _tmain(int argc, _TCHAR* argv[])
    {
     int j = 200, k;
     int l = 12.3;
     int m = 1 ? 1 ? 2;
     return 0;
    }


    そこで、Connectサイトを調べてみたところ、USのConnectに不具合が登録されており、"next release"で修正済みとのことでした。
    VS2010Beta1での再現テストは行っていませんが、もしかしたら修正されているかもしれません。
    https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=334191


    VS2008で打つ手はないかと思って、support.microsoft.comで英語で検索したところ、下記のKBがヒットしました。
    http://support.microsoft.com/kb/963696/en-us

    Hotfixが出ているらしいので、支障があるのであればリクエストしてみると良いかもしれません。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク sosu 2009年6月25日 5:28
    2009年6月23日 14:21
    モデレータ
  • Hotfixのリクエストはここになるようです。
    http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=963696

    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年6月23日 14:34
    モデレータ
  • なるほど、バグだったんですね。
    こう言うものなのかと思っていました。
    エディットコンティニューを多用される方はHotfixをリクエストした方が良いかもしれませんね。

    追記:
    Hotfixのところを見てみたんですが、リリースがSP1になっているみたいで、SP1なら当てているはずなんだけどと思いました。
    このリリースと言うところはそういう意味ではないんでしょうか。
    私も直る物なら直したいと思っています。


    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。
    • 編集済み PATIO 2009年6月24日 10:02
    2009年6月24日 9:57
  • Hotfixのところを見てみたんですが、リリースがSP1になっているみたいで、SP1なら当てているはずなんだけどと思いました。
    このリリースと言うところはそういう意味ではないんでしょうか。
    「リリースがSP1になっているみたい」とはどこの部分からそう読み取ったのでしょうか?

    > Prerequisites
    > You must have Microsoft Visual Studio 2008 with Service Pack 1 installed to apply this hotfix.
    このHotfixの前提条件として、「Microsoft Visual Studio 2008 Service Pack 1がインストール済みであること」とは明示されています。


    ただ、私の環境はVS2008SP1のはずだけど、対象製品が見つからないと言われて進みませんでしたが…。orz
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年6月24日 13:47
    モデレータ
  • 「リリースがSP1になっているみたい」とはどこの部分からそう読み取ったのでしょうか?

    > Prerequisites
    > You must have Microsoft Visual Studio 2008 with Service Pack 1 installed to apply this hotfix.
    このHotfixの前提条件として、「Microsoft Visual Studio 2008 Service Pack 1がインストール済みであること」とは明示されています。


    ただ、私の環境はVS2008SP1のはずだけど、対象製品が見つからないと言われて進みませんでしたが…。orz
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    リンク先のページ「修正プログラムのダウンロード」で修正プログラムを選択するというリストがありますが、
    このリストの項目にリリースと言う項目があったのでこれがこのHotfixがリリースされたタイミングなのかと考えていました。
    Hotfixのファイルの取得まではしていないのでその中に書かれている内容に上記の記述があったのであれば、見ていません。


    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。
    2009年6月25日 3:02
  • 皆様ありがとうございます。
    やはりバグだったんですね。

    早速、Hotfixを確認してみます。

    2009年6月25日 5:30
  • Hotfixのファイルの取得まではしていないのでその中に書かれている内容に上記の記述があったのであれば、見ていません。
    KBに書かれています。(HotfixのリクエストURLを示した投稿の1つ前の投稿です)
    http://support.microsoft.com/kb/963696/en-us

    修正後のバージョン番号も記載されていますが、VS2008SP1環境よりも新しい番号になっているはずです。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年6月25日 13:40
    モデレータ