web-dev-qa-db-ja.com

VisualStudioブレークポイント警告

コードをデバッグするとき、ローカル変数の値をチェックしてすべてが正しい方向に進んでいることを確認するために、ブレークポイントをスローすることがよくあります。

最近、コードに変更を加えて再コンパイルすると、すべてのブレークポイントが(完全な赤い円ではなく)円の輪郭に変わり、次のようなエラーが表示されます。

現在、ブレークポイントはヒットしません。この行に実行可能コードは関連付けられていません。考えられる原因には、条件付きコンパイルまたはコンパイラの最適化が含まれます。

この問題の奇妙な点は、ブレークポイントを削除して追加するだけで、すべてが完全に正常に機能することです。

条件付きコンパイルやコンパイラの最適化を使用していません。これが何を意味するのか、またはこれを修正する方法を誰かが知っていますか?コンパイルするたびに10〜12個のブレークポイントを置き換えるのは非常に面倒です。

21
Kyle Uithoven

これはいくつかの理由で発生する可能性があります

  • デバッガーが使用しているコードは、アプリケーションが実行しているコードとは異なります
  • デバッガーが使用しているpdbファイルは、アプリケーションが実行しているコードとは異なります
  • アプリケーションが実行しているコードが最適化され、デバッグ情報が削除されました。
  • ブレークポイントがあるコードはまだプロセスにロードされていません(上記のものが原因ではないと仮定)
  • デバッガーをアタッチする場合は、アタッチしている.netフレームワークに注意してください(コードがすべて.net2.0のときに.net4を使用すると問題が発生しました)
  • あなたが持っているアセンブリもGACにあります。これは、プログラムをデバッグできるようにインストールしたが、インストーラーがdllをGACに配置した場合に発生する可能性があります。
  • 参照を削除して再度追加します( forsvarir に感謝します)。通常、これは、参照されているプロジェクトがソリューションにない場合に発生し、VSは別のプロジェクトのbinディレクトリからdllをコピーします。参照を再度追加しようとすると、これが問題であり、プロジェクトが見つからないことがわかります:)

ここで何が起こっているのかを理解するのはかなり難しいですが、フュージョンログビューアを使用して、何がロードされているのか、どこからロードされているのかを確認してから、dllを調べて古いコードかどうかを確認することをお勧めします。

19
Darren Kopp

プロジェクトの設定を確認してください

コード最適化オプションをチェックしないようにし、デバッグシンボルがチェックされていることを確認してください。

debug

構成を変更すると、他の設定も変更され、表示されない場合があることに注意してください。コンパイルしようとしている構成の値が正しいことを確認してください。


出力ファイルを削除します

生成されたすべてのDLL、PDB、およびEXEを物理的に削除します。次に、再度コンパイルしてファイルを生成します。ソリューションのビルド時に、VisualStudioが出力ファイルを上書きするために「迷子になる」および「忘れる」場合があります。


コンピュータを再起動してください

通常、99%の問題を解決します。 Visual Studioですでにいくつかの問題が発生していて、再起動するか、コンピューターで問題が解決しました。

8
BrunoLM

私はこれが古い投稿であることを知っていますが、私がこの問題を抱えているかもしれない他の理由を探していたので、それでも十分にタイムリーです。

そうは言っても、Webアプリケーションを作成している場合は、c:\ Windows\Microsoft.NET\[Frameworks]ディレクトリの「一時ASP.NETファイル」も確認することをお勧めします。これらのファイルが私の経験の原因であることが多いためです。

2
Talspaugh27

私が発見したように、プリコンパイラディレクティブ#lineの使用は、ブレークポイントの動作にも影響を与えるようです。

0
PeskyGnat

私のような誰かが古いASP.Netアプリケーションでこの謎を追跡している場合に備えて、この応答を古いスレッドに追加します。 「...実行可能コードがありません...」デバッガー警告でブレークポイントに応答しなかったWebフォームコードビハインドが1つありました。他のすべてのページが正常に機能していたので、頭を悩ませていました。クリーンアップ、再構築、一時ASP.Netファイルの削除を行いましたが、喜びはありませんでした。

このファイルの原因は、いくつかのメンバー変数宣言を囲むいくつかの#ExternalSourceディレクティブが含まれていることでした。それらが削除され、プロジェクトが再構築されると、ブレークポイントの動作が復元されました。これらのExternalSource行は、コードビハインドの生成されたセクションに表示されていました。彼らがそこにいた理由がわかりません。

0
Steve Py