2011-07-11 6 views
3

私は、今日のように私のエラーが表示されなくなった今日のWindowsアプリケーションで作業していました。代わりに、デバッガはメソッドから飛び出します。出力ウィンドウは例外を記録しますが、通常のポップアップトレースは表示されません。Visual Studio 2010デバッガはエラーで停止しなくなりました

これは他のプロジェクトでも動作しますが、エラーを発生させる最初の行にDim i as Integer = "A"を入れましたが、その行のサブを終了します。

どのように私はそれを取り戻すためのアイデアですか?

答えて

11

デバッガとLoadイベントで発生するWindows 7の64ビットバージョンとの間の相互作用にバグがあります。例外がトラップされ、Windowsで飲み込まれた場合、デバッガは未処理であることを検出する機会はありません。表示されるのは、[出力]ウィンドウの「最初のチャンス」通知だけです。 Loadイベントハンドラは即座に終了し、初期化コードの重要な部分をバイパスしなかったと仮定して、何も起こらなかったかのようにプログラムは実行を継続します。このバグは長年にわたって存在しており、Microsoftにはよく知られていますが、修正するのは難しいようです。

Project + Properties、Compileタブ、スクロールダウン、Advanced Compile Optionsボタンでこのバグを回避できます。ターゲットCPUの設定を「AnyCPU」に変更してください。それをトラップする別の方法は、Debug + Exceptionsで、CLR ExceptionsのThrownチェックボックスにチェックを入れます。さらに別の回避策は、OnLoad()またはLoadイベントの代わりに、初期化コードをコンストラクタに配置することです。ウィンドウの実際のサイズを知る必要があるときは、Loadのみが必要です。

このバグは、デバッグ時にのみ発生します。それはあなたのユーザーのマシンでは起こりません。


更新:this postでこの事故を大幅に拡大しました。

3

あなたの.suoファイルが削除されている可能性があります(これはソリューションの個人的な状態、設定、展開されている/折りたたまれているものです)。あなたが忘れてしまったために "すべてを崩壊"しなければならないと突然気がついた場合、あなたは本当にこれを見つけます。あなたがソリューションを開いたときにこれを再作成しますが、デフォルト設定で行います。

もしそうなら、CTRL + ALT + Eキーを押して、CLR例外の例外のチェックボックスを再度チェックします。

+0

私はちょうど投げられたボックスをチェックしました、そして、それは今エラーで壊れますが、私の他のプロジェクトで投げられていませんが、まだエラーで壊れています。とにかくこれをチェックしておくことに何らかの害はありますか?私が今日追加したUnitTestとは関係があると思います。最初に私が見たのは、それがそうするだろうと思っていませんでした。これをもう一度有効にするより良い方法はありますか? – baileyswalk

7

[デバッグ] - > [例外]の下で、共通言語ランタイム例外がチェックされていることを確認します。

+0

これは機能しましたが、それはハックですか?上記の投稿を参照してください...私はそれが私が今日追加した単体テストと関係していると思います。 – baileyswalk

関連する問題