[解決済み] .NET Frameworkのソースステップを有効にする」方法を教えてください。
質問
2013年2月22日更新 : Microsoft Connect のエントリに、Alok Shriram (Program Manager, Base Class Libraries, .NET Framework) から、この問題が解決されたはずであるというメモがあります。Connect のエントリは次のようにマークされています。 解決済み (修正済み) :
この問題は現在修正されているはずです。参照ソースのアップデートを公開しました。 この問題がまだ修正されていない場合は、私たちにお知らせください。
1年半
ボーナス・リンク
オリジナルの質問
Visual Studio 2010 で .NET フレームワークのソース ステッピングを有効にするにはどうすればよいですか。
ノート : この質問は、より大きな全体の中の1つのピースです。
- .NET 2.0 WinForm。DPI およびデフォルト フォントの変更のサポート
- WinForms コントロールは ScaleControl 中にスケールしません。
- VS2010: .NET Framework のソース ステッピングを有効にする方法を教えてください。
- Visual Studio 2010 Professional: モジュールウィンドウにアクセスする方法は?
- Visual Studio 2010。プロジェクトを .NET Framework 3.5 に再ターゲットすると、Properties.Settings が壊れる。
Visual Studio 2010 には、新しい機能が搭載されています。
- ツール、オプション、デバッグ、一般。 .NET Framework のソース ステッピングを有効にする
MSDN のページにある説明に従って 方法。.NET Framework ソースのデバッグ :
<ブロッククオート.NET Framework のソース デバッグを有効にするには
-
で ツール メニューで オプション .
-
での オプション ダイアログボックスで デバッグ のカテゴリをクリックします。
-
には 一般的な のボックスで、以下のチェックボックスを選択します。
- .NET Framework のソース ステッピングを有効にする
- ソースサーバーのサポートを有効にする
私はこうしています。
注意 : MSDN のページに書いてあるように、そして私が気づいたように、チェックすることで .NET Framework ソース ステッピングを有効にする をチェックすると、自動的に **Enable Just My Code (Managed only) のチェックが外れることに注意してください。また、ソース サーバー サポートの診断メッセージも有効にしました。
これらのオプションを有効にすると、私のためにシンボル キャッシュのダウンロード場所が自動的に設定されました。
注意 : は マイクロソフトシンボルサーバ のエントリはすでに存在しています (そして削除できません)。
MSDN のページには、シンボルを読み込むように書かれています。
モジュールウィンドウを使用してフレームワークのシンボルをロードするには
での モジュール ウィンドウで、シンボルがロードされていないモジュールを右クリックします。シンボルがロードされているかどうかは シンボルの状態 の列を見ればわかります。
を指す。 シンボルの読み込み元 をクリックし マイクロソフトシンボルサーバ をクリックして Microsoft public symbols server からシンボルをダウンロードするか、Symbol Path をクリックして以前にシンボルを保存しておいたディレクトリからロードします。
私はこれを試しています。
と入力すると、すべてのシンボルが読み込まれます。
.NET フレームワークのコードに呼び出されようとしている、ブレークポイントの上に座っています。
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
base.ScaleControl(factor, specified);
プッシュする F11 を押すと、デバッガは単に次の行にスキップします。
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
base.ScaleControl(factor, specified);
//Record the running scale factor used
this.scaleFactor = new SizeF(
this.scaleFactor.Width * factor.Width,
this.scaleFactor.Height * factor.Height);
Visual Studio 2010 で .NET Framework のソース ステッピングを有効にするにはどうすればよいですか。
私は自分のコードのブレークポイントに座っています。コールスタックでさらに上の関数をダブルクリックしてみます。これにより、次のことができるようになると思います。 ジャンプ を .NET コードにジャンプさせることができます。
ただし、これはうまくいきません。Visual Studio は、利用可能なソースがないことを教えてくれます。
Visual Studio 2010 で .NET Framework のソース ステッピングを有効にするにはどうすればよいですか。
.NET コードにステップインしようとする前にディスアセンブル ビューに切り替えると (
デバッグ
->
ウィンドウズ
->
分解
) を見てみると
call
を.NETのコードに挿入しています。
の逆アセンブルをデバッグすることになります。
System.Windows.Forms.ScaleControl
:
<イグ
これは、.NET Framework のソースに踏み込むことができることとは同じではありませんし、同じぐらい便利でもありません。
Visual Studio 2010 で .NET Framework ソースのステップ実行を有効にするにはどうすればよいですか。
私のコンピューターで設定されたシンボルキャッシュのパスには、シンボルキャッシュファイルが含まれています。
ということで、ダウンロードするのは
pdb
シンボル ファイルをダウンロードしますが、その使用を拒否します。
Visual Studio 2010 で .NET Framework のソース ステッピングを有効にするにはどうすればよいですか。
Leppie は、私がチェックすることを提案しました。
Debug
ログを確認するよう Leppie に提案されました (デバッグ ログ ウィンドウを開いた状態で。そうしないと何も記録されません)。
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
のシンボルを読み込んでいるのがわかります。
System.Windows.Forms.dll
:
Loaded 'C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Symbols loaded.
つまり は は私のシンボルを見つけましたが、それらを見つけることができなかったと主張しています。
Visual Studio 2010 で .NET Framework のソース ステッピングを有効にするにはどうすればよいですか。
Microsoft イタリアの人が、.NET Framework のソース ステッピングをオフにすることを提案しています。 ソース ファイルが元のバージョンと完全に一致することを要求する :
それでも直らなかった。
Visual Studio 2010 で .NET Framework のソース ステッピングを有効にするにはどうすればよいですか。
のための Microsoft のソース サーバーにバグがあることが示唆されています。 .NET フレームワーク 4.0 . その提案に従って、私はプロジェクトをターゲットとする .NET Framework 3.5 :
それでも直りませんでした。
Visual Studio 2010 で .NET Framework のソース ステッピングを有効にするにはどうすればよいですか。
どこかの誰かが、同じ問題を経験している別の人がいるかどうか、ぼんやりと考えていました。 は 64 ビット版のデバッガーを使っているのだろうか。 . さて、64 ビット版の Visual Studio というものは存在しませんが、私は自分のプロジェクトを AnyCPU から x86 (それは x64 に JIT されていました)、Microsoft が 64-bit プロセッサをサポートしない場合に備えてです。
それでも直りませんでした。
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
Visual Studio 2010 で .NET Framework のソース ステッピングを有効にするにはどうすればよいですか。
こちらもご覧ください。
- Visual Studio で .NET Framework ソース コードをデバッグするように設定する
- VS2010 で .NET フレームワーク コードをデバッグできない。
- オプションが設定されているにもかかわらず、.NET フレームワークのソース ステッピングが機能しない
- Microsoft .NET ソース コードにステップインするための Visual Studio 2010 のセットアップ
- Visual Studio 2008 SP1 .NET Framework ソース デバッグ
- Visual Studio 2008 Version 9.0.21022.8 RTM では、Debug>Modules ウィンドウが表示されない。
どのように解決するのですか?
ソース コードをステップ スルーするための PDB は、RTM および Service Pack に対してのみ掲載されています。 そのため、セキュリティ アップデートがリリースされ、デバッグしようとしている dll が変更されると、ソース ステップが機能しなくなります (つまり、" No source Available" が表示され、" Browse to find Source" がグレーアウトされます)。
しかし、適切な設定をすべて行った後は、次のような回避策を使用することができます。 この回避策は、基本的に、DLL を変更する原因となったセキュリティ更新プログラムを見つけ、それを削除することです。 これには、あなたのマシン上でそれらのセキュリティ アップデートが削除されるという明らかな欠点があります。
回避策
- デバッグする dll を特定する (例: System.Windows.Forms.dll など)
- デバッグ中に モジュール ウィンドウを開き バージョン の列を探します。 バージョンが RTM または Service Pack バージョンでない場合、ワークフローを実行する必要があります。 通常、RTM の dll には "ビルド バイと表示されます。RTMRel"と表示されます。 一方、セキュリティ アップデートの一部であるDLLには、「"built by: RTMGDR"と表示されます。 バージョン番号に注意してください (例: 4.0.30319.269 built by: RTMGDR)。
-
ここで、このバージョンを作成したアップデートを探します。 support.microsoft.com/kb/ で dll とバージョン番号を検索して、これを実行します。
たとえば、私は次のような google 検索を行いました。
site:support.microsoft.com/kb System.Windows.Forms.dll 4.0.30319.269
-
検索すると、アップデートに関する情報が表示されるはずです。 アドレス バーにある KB 番号に注意してください。 私の例では、アドレスは
http://support.microsoft.com/kb/2604121
であり、KB2604121 が私たちの関心事です。 - コントロール パネル] - [プログラムと機能] に移動し、[インストールされた更新プログラムの表示] をクリックします。
- KB 番号が記載されている更新プログラムを探します (右上のボックスの検索を使用できます)。
- その更新プログラムをアンインストールします。
- この同じ dll について、dll が RTMRel バージョンまたは SP バージョンに戻るまで、このプロセスを繰り返します。 たとえば、System.Windows.Forms.dll の場合、RTMRel バージョンに戻る前に KB2686827、KB2604121、KB2518870 を削除する必要がありました。
この作業は、.NET フレームワーク内の、デバッグを必要とする各 dll に対して行う必要があります。
それが完了したら、.net ソース内でブレークポイントを設定するか (たとえば、[ブレークポイント] タブで New->Break at Function と言って System.Windows.Forms.Form.Form と入力します)、その dll の .net メソッドのいずれかに踏み込みます。
関連
-
[解決済み] msiexec を使用せずにコマンドラインから MSI ファイルをアンインストールする
-
[解決済み] "ItemsSourceを使用する前に、Itemsコレクションを空にする必要があります。"
-
[解決済み] 16進数値0x00は無効な文字です。
-
[解決済み] Visual Studioのデバッグ/ロードが非常に遅い
-
[解決済み] .NET Framework 4 マルチターゲティングパックがアンインストールできない
-
[解決済み] 権限 '*' を持つ SSL/TLS の安全なチャネルを確立できませんでした。
-
[解決済み] terminationGracePeriodSeconds not
-
[解決済み] .net の OOM 問題を解決する必要があります。
-
[解決済み] 実際のサービスはデータを返すのに、なぜWebServiceはnullを返すのですか?
-
[解決済み] Visual Studio 2010による.NET Framework 4.5のターゲット化
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] ファイル *.mdf をデータベースとしてアタッチできない
-
[解決済み】警告。同じ依存アセンブリの異なるバージョン間で競合が見つかりました。
-
[解決済み] msiexec を使用せずにコマンドラインから MSI ファイルをアンインストールする
-
[解決済み] C++/CLIにおけるキャレット('^')の意味は?
-
[解決済み] Html.BeginForm()にCSSクラスを追加する。
-
[解決済み] WPFで角丸ボタンを作成する/作るには?
-
[解決済み] Microsoft.NETFrameworkとMicrosoft.NETFramework64の違いは何ですか?
-
[解決済み] ネットワークの位置からアセンブリをロードすることはできません
-
[解決済み] 1は有効なWin32アプリケーションではありません "を解決するには?
-
[解決済み] HashSetとListの性能比較