私はVS2010でC#.NETクラスライブラリプロジェクトに取り組んでいます。プロジェクト設定->デバッグ設定で、非常に単純なjscriptファイル(test.js)を実行する外部プログラム(C:\ Windows\SysWOW64\wscript.exe)を起動するようにプロジェクトを設定しています。スクリプトは、クラスのインスタンスを作成し、そのメソッドの1つを呼び出すだけです。
問題は、デバッグを開始すると、VS2010がどのブレークポイントでも停止しないことです。 VS2008でまったく同じプロジェクトを開くと、ブレークポイントで停止します。ブレークポイントがヒットするのを防ぐ新しい設定がどこかにありますか?他の誰かがこの問題に遭遇しましたか?
コンポーネントを使用して次のデータでデバッグするアプリケーションの構成ファイルを作成することにより、この問題を解決します。
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
このファイルを使用して、デバッグに適切なランタイムバージョンを使用するようにデバッガーに指示します(デバッガーはデフォルトでバージョン4.0を使用しているようです)。
私の最初のチェックは「JustMyCode」を無効にすることです
シナリオを再試行してください。
Visual Studio 2012コンソールアプリケーションをデバッグできなかった理由を1日中調べましたが、その答えは恥ずかしいものでした。
「RELEASE」モードで実行していました。
時々明らかなものを見つけるのは難しいです。
VisualStudioを閉じるIDEそして開くこれで動作します。私にとっても同じ問題に直面します。私はこの方法を使用して克服しました
デバッグできなかった(シンボルがない)「再構築された」VS2013プロジェクトがありました。最後に、最適化がチェックされているのを見ました(プロジェクト->プロパティ->ビルド)。チェックを外して再構築しました。シンボルが最終的にロードされました。私の2セントは、絶対に必要な場合にのみ最適化を使用(コンパイル)します。
なぜそれが起こるのか答えることはできませんが、回避策を提供することはできます。
含める
using System.Diagnostics;
コードの最初(たとえば、クラスコンストラクター)に次の行を配置します。
#if (DEBUG)
while(!Debugger.IsAttached);
Debugger.Break();
#endif
デバッグを開始します。
ブレークポイントはコードでトリガーする必要があります。他のブレークポイントもトリガーする必要があります。
理由が間違っている場合(私の問題でした)、構成ファイルを作成する代わりに、プロセスに添付で正しいバージョンを選択するだけです。 )ダイアログ。
ダイアログで、Attach toSelectそして自動的に...からこれらのコードタイプをデバッグします適切なバージョンを確認する必要があります。
これも問題である場合は、ブレークポイントに「シンボルがロードされていません」というメッセージが表示されている可能性があります。適切なバージョンを選択するとすぐに、このエラーが報告されなくなったことがわかります。
同様の問題が発生しましたが、CLRプロジェクトで発生しました。 CLRプロジェクトに古いc ++構文がいくつかありました。 [ツール]> [オプション]> [デバッグ]> [一般]で[管理された互換モードを使用する]を有効にした後、ブレークポイントに到達し始めました。
ネイティブC++コードのブレークポイントの位置が間違っているという問題がありました。その理由は、私がコードを編集していたため、コードの一部の行末が\ r\nではなかったためです。\r\nを検索しない限り、コードで確認することはできませんでした。適切な行を挿入した後、\ r\nデバッガーが機能しました。
問題は、ブラウザがキャッシュされたバージョンのページを使用している可能性があります。ブラウザf.xのアドレス行に意味のない余分なクエリ文字列を追加してみてください。 add?NONSENSE = 1234これにより、最終的にこのクエリでページの外観が異なるかどうかがわからないため、ブラウザは新しいバージョンのWebページを使用するように強制されます。次回は?NONSENS = 1235を使用します。
私にとっては、次の方法で修正されました。
プロジェクトのプロパティを開くのはVS2010です
コンパイルに移動->高度なコンパイルオプション
「デバッグ情報の生成」を「なし」から「完全」に変更します
いくつかの理由が考えられます。通常、間違ったバージョンに対してデバッグしようとしていることが原因です。
これらのアクションは、約80%の時間で機能します。
うまくいかない場合は、[デバッグ]> [ウィンドウ]> [モジュール]に移動し、関連するdllが存在する場合は、それを右クリックしてシンボルをロードします。
リストにない場合は、とにかくコードを実行してみてください。ブレークポイントに到達しないと表示されていても、必要なシナリオに入るまでdllがロードされないことが原因である場合があります。 dllに依存するシナリオを試してみてください。とにかく、ブレークポイントに到達する可能性があります。
もう1つのアイデアとして、ブラウザを再起動してください。古いdllから何かがキャッシュされている可能性があります。