なたでぽぽ

Visual Studioでブレーク出来ない問題

Visual Studioでプログラムを書いていると、ブレークポイントを仕掛けたのにヒットしてくれないという症状が出ることがあります。ブレークしてくれない事にはトレースやデバッグが出来ませんので、困ったものです。

現象としては、特に設定を変えていないのに、今まで普通にヒットしていたブレークポイントで止まってくれなくなるというもの。Visual Studioの2008でも2005でも同じ症状が出るようです。また、私が経験したのはC++ですが、C#やVB.NETでも同様の現象が起こると思います。

デバッグ実行中にブレークポイントのところの印を見ると無効にされており、マウスカーソルをそこに合わせると「ブレークポイントは現在の設定ではヒットしません。ソースコードが元のバージョンと異なります。」と言われます。

この症状が出たときにまず行ってみるのは、クリーンでしょう。メニューの[ビルド]からプロジェクトのクリーンを実行し、リビルドするだけで直ることもあります。これがダメなときには一旦Visual Studioを終了させ、DebugフォルダとReleaseフォルダ、それからncbファイルを消して見ます。運が良ければこれで解決するでしょう。

これで直らない場合にやってみる事としては、マイクロソフトのサイトに書いてあるように、「[全般] ([オプション] ダイアログ ボックス - [デバッグ]) の [元のバージョンと完全に一致するソース ファイルを必要とする] をオフにします。」というのがあります。

何かの具合で本当に「ソースコードが元のバージョンと異なる」という状態になっているのであればこれでいいのですが、そうでない場合には何だかちょっと気持ち悪い感じがします。

そういう場合にお勧めなのが、ソースの文字コードを変えるという方法。[ファイル]-[保存オプションの詳細設定]を選択すると、ソースコードのエンコード方法を指定するダイアログが出てきますので、ここでShift JISではなく、Unicodeを選択します。これをやると大体の場合には無事ブレーク出来るようになると思います。

こういう方法で動作が変わるという事は、原因はVisual Studioのバグだという事になります。何年も直っていないバグのようですが、早く修正してもらいたいものです。