Проблема с символами - невозможно войти в код .NET - PullRequest
8 голосов
/ 08 июля 2011

Я не могу сделать шаг Visual Studio 2010 SP1 ни в один класс .NET Framework, я нашел много руководств в Интернете, но ни одно из них не работает ...

Description

Вот что говорит окно вывода:

Step into: Stepping over method without symbols 'System.Collections.Generic.SortedSet<Shared.Optimization.Solution<GaTest.CurveFitSimplex,double>>.Remove'

Вот все содержимое окна вывода:

'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\Lu4\documents\visual studio 2010\Projects\Estimator\GaTest\bin\Debug\GaTest.vshost.exe', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll', Symbols loaded.
The thread 'vshost.NotifyLoad' (0x1444) has exited with code 0 (0x0).
The thread '<No Name>' (0x3d8) has exited with code 0 (0x0).
The thread '<No Name>' (0x10a8) has exited with code 0 (0x0).
The thread 'vshost.LoadReference' (0xc40) has exited with code 0 (0x0).
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\Lu4\documents\visual studio 2010\Projects\Estimator\GaTest\bin\Debug\GaTest.exe', Symbols loaded.
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\Lu4\documents\visual studio 2010\Projects\Estimator\GaTest\bin\Debug\Shared.dll', Symbols loaded.
Step into: Stepping over method without symbols 'System.Collections.Generic.SortedSet<Shared.Optimization.Solution<GaTest.CurveFitSimplex,double>>.Remove'
'GaTest.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll', Symbols loaded.

Ответы [ 2 ]

5 голосов
/ 31 августа 2012

Краткий ответ: http://referencesource.microsoft.com/downloadsetup.aspx

Длинный ответ:

Обычно файлы PDB - это просто карты между исходным кодом и кодом сборки IL.Чтобы это работало, вам нужно загрузить исходный код в папку, жестко закодированную в PDB.Вы можете найти это место, просто просматривая файл PDB в программе просмотра текста.Например, если вы видите System.pdb, вы увидите такие строки:

f: \ dd \ ndp \ fx \ src \ net \ system \ net \ websockets \ websocketconnectionstreamstream.cs f: \dd \ ndp \ fx \ src \ services \ Monitoring \ system \ Diagnostts \ eventloginternal.cs

Существуют некоторые плохо документированные методы, позволяющие переопределить это поведение, но это другая история.Вам также необходимо убедиться, что вы правильно настроили параметры отладки в вашей Visual Studio: Tools\Options\Debugging\General

Вы можете скачать исходный код и подробные инструкции с здесь .

1 голос
/ 09 декабря 2016

В статье , упомянутой Филиппом Муниным, шаг за шагом объясняется, как можно войти в (отладку) кода .NET Framework. Однако, если вы не хотите загружать весь фреймворк и хотите перейти к определенной сборке, можно выполнить несколько более простую процедуру:

(они протестированы в VS2015, где параметры отладки немного отличаются от параметров в VS2010)

  1. Убедитесь, что вы можете перейти на другой собственный код:

    Debug & rarr; Опции & rarr; Общий

    • Включено Просто мой код должен быть очищен
    • Включить проверку исходного шага .NET Framework (это будет запускать загрузку символов время от времени при подключении к процессу, но может быть отменено)
    • Переступить через свойства и операторы должны быть очищены
    • Необходимо включить поддержку исходного сервера
  2. Убедитесь, что символы для вашей сборки загружены (например, System.Data.dll)

    • Перейти к Debug & rarr; Windows & rarr; Модули
    • Фильтр для System.Data.dll
    • Щелкните правой кнопкой мыши & rarr; Настройки символов & rarr; Проверьте серверы Microsoft Symbol
    • Снова щелкните правой кнопкой мыши & rarr; Загрузить символы

Вы можете очистить серверы символов Microsoft, поскольку символы были кэшированы.

Теперь вы можете перейти к методам классов, определенных в System.Data.dll.

Заметный побочный эффект: если исключения включены (выбрасываются), многие исключения могут прервать запуск приложения («скрытые» исключения в рамках фреймворка). Это можно сделать, сняв флажок с определенных типов исключений или вручную (или Reattaching ) после запуска приложения.

...