web-dev-qa-db-ja.com

デバッガーがASP.NETアプリケーションのブレークポイントで停止しないのはなぜですか?

大規模なASP.NETアプリケーションをデバッグしようとしています。

Default.aspx.csのPage_Loadの最初の行にブレークポイントを設定します。

アプリケーションを起動すると、私のブレークポイントは感嘆符付きの赤い丸いアウトラインに簡単に変わります、その後通常のブレークポイントに戻り、そしてアプリケーションはブレークポイントで停止することなく起動します

MSDNは、このシンボルが「ブレークポイントの場所がロードされていない」ことを意味していると言っています。それでは、どのようにしてロードするブレークポイントの場所を取得できますか?数週間前に機能していました。ブレークポイントが「ロードされない」原因となる可能性があるのはどのようなものですか?

デバッガがブレークポイントで再び停止するようにするにはどうすればよいですか?

補遺:

F5を押してもデバッグを機能させることはできませんが、Webサイトを起動してからdebug/attach-processを実行してデバッグモードにすることはできます。誰かがこれが機能する理由を知っていても、F5を押しても機能しない場合(デバッグボタンはF5にも表示されません)、どんなアイデアでも歓迎します。

40
Edward Tanguay

アプリケーションを完全に再構築してみてください。 「デバッグ」構成にあることに注意してください。

私が理解している限り(ただし、私はこれらのことの専門家ではありません)、デバッグ情報ファイル(.PDB)が実際にコンパイルされたものと同期していない場合に発生する可能性があります。

46
Vilx-

人々....私はブレークポイントの他の解決策を見つけました。 Visual Studio 2010のAttach to Processウィンドウで、Framework 3.5を使用すると、デフォルトでデバッグするコードタイプ(v2.0、v1.1、v1.0)および(v4.0)が自動的に決定されます。

Visual Studioは混乱し、2.0マネージコードを4.0マネージコードとして自動的に決定することがあります。

この場合、「添付」フィールドの「選択...」ボタンをクリックして、管理(v2.0、v1.1、v1.0)を選択する必要があります。

よろしく

IE8でのVSデバッグの問題

これはWeblogsでの最初の投稿なので、ASP.NET公式フォーラムで頻繁に公開されている問題について書くことにしました。これは、VS8デバッガーがIE8でクラッシュすることです。

私は同じ問題に4回答えていたので、同じ問題に直面している人がこの投稿を非常に役立つと思うことを願っています。

IE8でVSデバッガーはどのようにクラッシュしますか?

IE8の複数のインスタンスを開いてプロジェクトをデバッグしようとすると、ほとんどの場合、VSデバッガーが停止してブレークポイントを無視するという問題が発生します。

なんで?

IE 8には、Loosely-Coupled Internet Explorer(LCIE)という機能があり、その結果IEが複数のプロセスで実行されます。 http://www.Microsoft.com/windows/internet- Explorer/beta/readiness/developers-existing.aspx#lcie

Visual Studio Debuggerの古いバージョンはこれに混乱し、正しいプロセスにアタッチする方法を理解できません。

この問題を解決するには、以下の手順に従ってLCIEのプロセス成長機能を無効にする必要があります。

1)RegEditを開きます2)HKEY_LOCALMACHINE->ソフトウェア-> Microsoft-> Internet Explorer-> Mainを参照します3)TabProcGrowthという名前のこのキーの下にdwordを追加します4)TabProcGrowthを0に設定します

Vista以降で同じ問題が発生した場合は、保護モードをオフにする必要もあります。

次に、コードのデバッグを開始します:)

6
madhusudhan.K

また、次を試すこともできます。

  1. ソリューションとビジュアルスタジオを閉じます。
  2. Iisreset/stopを実行します
  3. C:\ windows\Microsoft.net\framework\v2.0.50727\Temporary ASP.NET Filesの下のすべてを削除します。これらのファイルの削除に問題がある場合は、Visual Studioのバージョンがあるか、デバッガがまだ実行されている可能性があります。
  4. Iisreset/startを実行します
  5. VSでソリューションを開く
  6. ビルドをデバッグに設定します
  7. ソリューションレベルですべて再構築を実行する
  8. F5を押す
4
Jonathan Parker

Visual Studio 2005とIE8を使用している場合、説明があります。IE8は、VS2005 ASP.NETアプリケーションのデバッグ時に既知の問題を引き起こすLoosely-Coupled IE(LCIE)という新しい機能を導入しました。詳細といくつかの解決策については、こちらをご覧ください SO on thread .

ASP.NETプロジェクトでデバッグ実行を開始する前に、IE8の実行中のすべてのインスタンスをシャットダウンすると、デバッグの問題がすべてなくなりました。

私がここに投稿しているもう1つの理由は、 見つけたブログを共有する です。これは、「ブレークポイントが機能しない」問題に対する多数の潜在的な解決策をリストしています。ブログには、インターネットについて散らばっている解決策のほとんどが1か所にリストされているので、嬉しいです。とにかく、ブログの著者はジョージP.アレクサンダーです。記事に何かが起こった場合に備えて、ここにジューシーな部分をコピーして貼り付けます。

  1. 精密誘導ミサイルの使用:objおよびbinフォルダーの.pdbファイルを削除します。再コンパイルします。走る.

  2. すべての.dllを爆弾:参照されているすべての.dllを削除して再ロードします(クラスプロジェクトのように)

  3. WMDをリリースします:#1と#2が機能しなかった場合、すべての.pdbsと.dllが消滅するように、非常にobjフォルダーとbinフォルダー自体の内容を削除します。必要な.dllをリロードして、試してみてください。

  4. VS.Netマジック:VS.Netを閉じて再起動します。再構築します。走るはい、時々動作します。

  5. Windowsマジック:コンピューターをシャットダウンして再起動します。再構築します。走る.

  6. 実行モード:VS.Net実行モードが「リリース」ではなく「デバッグ」に設定されていることを確認します

  7. Web.configの設定:web.configファイルのXML要素の「コンパイル」タグにdebug = "true"の属性があることを確認してください。これが有効になっている場合にのみ、Webアプリとサービスは.dllで生成された.pdbファイルを持ちます。

  8. プロジェクトプロパティ#1:[プロジェクトプロパティ]-> [デバッグ]-> [ASP.Netデバッグが有効]または[Visual Studioホスティングプロセスを有効にする]を有効にします(使用しているVS.Netのバージョンによって異なります)。

  9. プロジェクトプロパティ#2:[プロジェクトプロパティ]-> [構成プロパティ]-> [ビルド]-> [デバッグ情報の生成]が[True]に設定されていることを確認します。

  10. 間違ったプロセスが添付されています:デバッグセッションが正しいプロセスに添付されていない可能性があります。プロセスを手動でアタッチするには、ステップインする必要がある場合があります。これはWebサービスで可能です。プロセスをアタッチするオプションは、デバッグメニュー内にあります。

  11. スクリプトおよびアンマネージコードのデバッグ:スクリプトまたはアンマネージコードをデバッグできませんか? [プロジェクトプロパティ]-> [デバッグ]-> [有効にするASPデバッグ]または[アンマネージデバッグを有効にする](VS.Netのバージョンに応じて)がtrueに設定されていることを確認します。

  12. @Pageディレクティブ#1:.aspxドキュメントの@PageディレクティブのAutoEventWireup属性が「true」に設定されていることを確認します。

  13. @Pageディレクティブ#2:.aspxドキュメントの@PageディレクティブのDebug属性が「true」に設定されていることを確認します。属性が見つからない場合は、大丈夫です。デフォルトではtrueです。

  14. 不正な.DLL:目的のプロジェクトパスの別の場所にある.dllの別のインスタンスが実行されていないことを確認します。

14.1 Rogue .dlls sleeper cell#1:プロジェクト.dllをGACフォルダーにインストールしましたか? binフォルダーではなく、GACフォルダーでホストされている.dllを実行できます。 GACから.dllを削除/アンインストールしてから、もう一度試してください。

14.2不正な.DLLsスリーパーセル#2:

C:\ Documents and Settings [ユーザー名]\VSWebCache [マシン名]:

プロジェクトに関連するフォルダーでWMD(#3)をリリースします。

14.3不正なDLLスリーパーセル#3:プロジェクト内の別の場所にあるが、プロジェクト内で参照されるプロジェクトの.dll。プロジェクトのプロパティを調べることでこれらを見つけることができます。つまり、VS.Netは、開発環境にロードされたものではなく、他の.dllを参照しています。

14.4 Rogue .DLLs sleeper cell#4:上記のポイントを終えるまでに、このフォルダで遊ぶ必要がないことを願っています...

C:\ WINDOWS\Microsoft.NET\Framework [.Netバージョン]\Temporary ASP.NET Files \の紹介

このフォルダーには、VS.Netから実行中に参照される可能性のある、Windowsフォルダーに保存されている.dllの古いバージョンを含めることができます。これが発生した場合、それは吸う。プロジェクトに関係するのと同じ数のフォルダとコンテンツを削除できます。プロセスを閉じることで無効にする必要がある読み取り専用ロックが存在する場合があります。これは最後の溝の努力です。 Windowsフォルダで遊んだことがない場合は、これをしないでください。ほとんどの場合、この時点の前に上記で行われた何かが通常それを修正します。したがって、理想的には、上記のポインターを使い終えるまでにこの点を読む必要はありません。また、記録のために、物理学、数学、Windows、および.Netの博士号をお持ちでない場合、このオプションを検討したり、Windowsフォルダーをいじったりすることはお勧めしません。

その他のヒント:

  1. モジュールウィンドウ:モジュールウィンドウは、VS.Netからアプリケーションを実行中に表示できます([デバッグ]-> [ウィンドウ]-> [モジュール])。プロジェクトのすべてのモジュールがそこにリストされているはずです。プロジェクトの.dllが一覧表示され、シンボルのステータスが「Symbols Loaded」の場合、問題はありません。

.pdbファイルに関連するメッセージの場合は、「Select Symbols」と適切な.pdbファイルに移動します。デバッグを再開するか、VS.Netを再度ロードする必要がある場合があります。ステータスが「Symbols Loaded」に変わります。
2。 VS.Netオプション:ツール->オプション->デバッグVS.Net 2005以降では、VS.Netにシンボルの検索を依頼できる「シンボル」と呼ばれるもう1つのノードがあります。デバッグ時にもモジュールウィンドウからアクセスできます。

4
Jay Riggs

Web.configで<compilation debug="true">を設定しましたか?

3
Miha Markic

ブレークポイントが機能しないという同様の問題が発生し、同時にIIS Consoleでプロジェクトの構成を編集できませんでした。つまり、[構成の編集]ボタンがグレー表示されていました。

[構成の編集ボタンを見つけるには、[スタート] | [すべてのプログラム|管理ツール|インターネットインフォメーションサービス、次に必要なコンピューターを展開し、[Webサイト]、[既定のWebサイト]を展開し、必要なプロジェクトを見つけて右クリックし、[プロパティ]を選択して、[ASP.Net]タブを選択します。

IISで、私のプロジェクトのASP.Netバージョンが4.0.30319に設定されていることを発見しました。 2.0.50727に設定にすると、[構成の編集]ボタンが使用可能(クリック可能)になり、ブレークポイントが再び機能しました。

また、IIS for "Default Web Site" [IISコンソールで、Webサイトを展開、既定のWebサイトを右クリックして、[プロパティ]、[ASP.Net]タブの順に選択します。これにより、Visual Studioで作成された新しいプロジェクトは既定のWebサイト設定を取得します。

2
Lloyd Conrade

最近この問題(WinXP、VS2003)が発生し、上記のソリューションの多くを試してみましたが成功しませんでした。次に、.Netランタイムの複数のバージョンがインストールされていることに気付きました。だから、私はIIS 5.1を立ち上げ、適切な仮想フォルダを見つけ、プロパティに行き、次にASP.NETタブに行き、ASP.NETバージョンを4.?から1.1に変更し、これで問題が解決したように見えますが、解決策はこれに加えて、上記の1つ以上の問題である可能性があります。

また、上記のすべてが、試してみるさまざまなものの「キッチンシンク」を構成します。これは、スパゲッティヌードルの束を壁に投げて、それらのいくつかが固執することを望んでいるようなものです。また、これらの「解決策」の一部は、プログラムで他の問題を引き起こす可能性があります。たとえば、AutoEventWireup = "true"を設定すると、一部のイベントが2回発生する可能性があります!!! ( http://support.Microsoft.com/kb/814745 を参照)。

1
Austin

常にSolution Configurations Set As "Debug"を探してデバッグしてください。公開後にリリース構成に変更される場合があります。

1
Mohamed Alikhan

私の場合、問題は完全なIIS(Expressではない)を使用することと、完全なデバッグシンボルを含むがプロジェクトプロパティも含むデバッグビルドを持つことの両方に関連するBuildOptimize codeチェック済み。

Expressでは、これは正常に機能しますが、full IISでは機能しません。VisualStudioはw3wpプロセスに正しくアタッチしますが、最適化されたdllのシンボルをロードしません。VisualStudioでは、 DebugWindowsModulesに移動し、特定のdllをスクロールして、Symbol Status列の下にSkipped Loading Symbols.と表示されているかどうかを確認します。 Load Symbolsを選択して機能させます。

これに影響する可能性のある追加設定の1つは、Visual StudioがDebugOptions and SettingsDebuggingGeneralEnable Just My Codeの下のユーザーコードのみをデバッグするように設定されている場合です。最適化されると、完全なIISで実行されている場合、dllはユーザーコードではないとしてマークされるため、Just My Codeを有効にすると、dll内のブレークポイントはすべてスキップされます。 VSを設定して非ユーザーコードをデバッグするか、ビルドを最適化しないように設定して、ブレークポイントにヒットできるようにします。

0
Jeremy Murray

Debug => Options => General => [Enable Just My Code]のチェックマークを外します

これは私のために働いた

0
BeccaGirl
  1. ソリューションのプロパティに移動します。
  2. 構成プロパティ内で、ソリューションのすべてのプロジェクトのビルド構成を「リリース」ではなく「デバッグ」に設定します。
  3. [適用]をクリックし、[OK]ボタンをクリックします。
0
Pankaj Devrani

これにより、設定が欠落していることに最終的に気付くまで、1週間私を夢中にさせました。これは、Jay Riggsの回答に基づいていますが、2005年ではなくVisual Studios 2010の場合です。プロジェクトプロパティ-> Web->デバッガで、ASP.NETデバッガがチェックされていることを確認してください。

0
5unnyr4y3

私にとって、プロジェクトプロパティは別の開発者によってリセットされ、IIS Expressを使用し、ローカルではなくIIS=を使用していました。ヒット。

[プロジェクト]> [プロパティ]> [Web]> [サーバー]を右クリックし、[ローカルIIS]に変更します。私はこれがすべての人にとってうまくいくわけではないことを知っていますが、これが誰かを助けることを願っています。

0
Julian Rosebury