0

これに従って、VS 2010でシンボルサーバーをセットアップしました:

http://msdn.microsoft.com/en-us/library/vstudio/b8ttk8zy(v=vs.100).aspx

しかし、私の目標は、RegularExpressions 名前空間の Regex クラスに足を踏み入れることです。

Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Dim matObject As Match = Regex.Match("abc", "a")
    End Sub
End Module

System.dll アセンブリの RegularExpressions シンボルがかなり前に公開されたことは知っています。これは、少し前に記事を読んで興奮し、簡単な概要を説明したためです。しかし、記事が見つかりません。

現状では、Match 関数に「ステップ イン」すると、ステップ オーバー ダイアログさえ表示されません。踏み越えるだけです。

4

1 に答える 1

1

これを取り巻く複数の問題があることがわかりました。それらの一部には Visual Studio 2008 SP1 が含まれていますが、2013 年後半にはほとんど問題になりません。

私にとっての解決策は... シンボルサーバーを使用しないでください。少なくとも VS 2010 では、1 つまたは 2 つの要因に応じて、一般的な場所から読み込まれるか、http://referencesource.microsoft.com/symbolsから読み込まれる「Microsoft Symbol Servers」を使用する必要があります。

両方の問題は、これらのシンボル ファイルの場所を使用するたびに、PDB が削除されることです。サブドメイン " http://referencesource.microsoft.com/symbols " でお気づきかもしれませんが、Reference Source は大きく近づいています。

だから私がしたことは、同じサブドメインにあるDownload Sourceに移動することでした。.NET 4.0 を使用しているので、.NET 4.0 ソース ファイルをダウンロードしました。

なに?そのため、NetFramework.aspx という名前のジャンク ファイルをダウンロードしました。コンピューターを開くとフリーズするだけです。ポイントは何ですか?誰も教えてくれませんが、Whatever.msi に名前を変更する必要があります。実はインストーラーです。

インストーラーを実行すると、マシンのどこかに完全なシンボルが表示されます。やったー!その時点で、Visual Studio が正しくセットアップされていることを確認する必要があります。

  1. プロジェクトのフレームワークが、ダウンロードしたソースのフレームワークと一致していることを確認してください。(および/またはその逆)
  2. [.NET Framework ソースのステッピングを有効にする] が有効になっていることを確認します。
  3. 私の場合、[オプション] > [デバッグ] > [シンボル] メニューで、[指定されたモジュールのみ] を選択し、そこで何も選択しませんでした。また、PDB の場所のチェックを外したので、何も選択されていませんでした。
  4. プラットフォーム ターゲットが問題になる場合があります。私はAnyCPUに設定されていますが、実験する必要があるかもしれません?

わかった!!準備万端、やってみましょう... 失敗。

F11 を押しても、コードをステップ オーバーするだけです。さて、モジュールを(実行中に)見ると、システムまたはmscorlibのシンボル、またはアセンブリのシンボルがSYMBOLS NOT LOADEDと表示されていることを願っています。(それは良い)。

なぜそれが良いのですか?それらが読み込まれている場合、それらを読み込むことができないためです。そして通常、それらがロードされる場合、それらはどこにも行き着かないジャンキーなストリップされた PDB の場所からロードされます。したがって、選択したアセンブリを右クリックして [パスからロード...] を選択し、MSI からそれらの PDB をインストールした場所に移動します。

すばらしい... .NET Framework コードにステップ インしようとすると、またはコール スタックからコードを読み込もうとすると、コードが見つからないというエラーが表示され、ソース コードを検索するオプションがグレー表示されます。 !! まあ、私たちはコードを持っていると思いました!!!! 私はそれをロードしました。

モジュールウィンドウに戻りましょう。読み込もうとしているアセンブリの横にあるバージョンで、"built by: RTMGDR" や "RTMRel" などと表示されていることに気付くでしょう。RTMGDR は、現在使用されているコードのバージョンが元のバージョンと異なることを意味します。なぜ違うのですか?KB セキュリティ更新プログラムがインストールされたためです。コードは PDB とは異なるため、介入することはできません。

残念ながら、最新の PDB を入手することはできません。理由は誰にもわかりません...おそらくセキュリティ更新プログラムだからです。しかし、あなたができることは...次のようにあなたのバージョンをグーグルすることです:

「mscorlib.dll」4.0.30319.xxx サイト:support.microsoft.com/kb

何もクリックする必要はありません。最初の結果の URL を見ると、次のような KB 番号が表示されます。

support.microsoft.com/kb/12345

[プログラムの追加と削除] (実行: appwiz.cpl) を開き、インストールされた更新プログラムを表示します。Visual Studio グループの下でその KB を非常に簡単に見つけることができ、それをアンインストールできます。

次に、Visual Studio を再度実行します。古いバージョンの新しい RTMGDR が表示される可能性があります。Google は、KB を削除します。すすぎ、繰り返します。

削除する KB を追跡します (順番に)。そのため、研究後に後で再インストールできます。

最終的にバージョン xxxxxx.1 (RTMRel) になったら、Visual Studio をブレーク ポイントまで実行します... モジュールを開きます... パスからシンボルを読み込みます... MSI から PDB を選択します... 次に。 ... .NET コードにステップインする

最後に!!!

完了したら、これらの KB を再インストールしますが、他のすべての設定は次回のために同じにしておきます。セキュリティは重要です。

于 2013-08-02T19:27:05.843 に答える