Как я могу отладить эту строку кода в Visual Studio?
-
23-08-2019 - |
Вопрос
У меня есть следующая строка кода в VS2008.
VirtualPathData virtualPathData =
RouteTable.Routes.GetVirtualPath(_viewContext.RequestContext,
"Home",
pageLinkValueDictionary);
Я хочу отладить это GetVirtualpath(..)
метод ..чтобы увидеть, что он пытается сделать.
Я предполагаю, что мне нужно получить символы с сервера символов MS.
То, что я сделал, было
- Выключать Включить только мой код
- Включать Включить поддержку исходного сервера
- Показать Модули окно при отладке (чтобы вручную загрузить правильный модуль)
Скомпилируйте в режиме отладки, поставьте точку останова на этой строке и запустите отладку.Когда я дохожу до линии, я вручную загружаю System.Web.Routing(..)
от Сервер символов MS.Это работает (pdb загружается локально), и когда я вхожу в эту строку, я перехожу к некоторому коду Dissassemler :(
Может ли кто-нибудь увидеть, что я делаю неправильно?
Решение
То, что файл символов загружен, не означает, что для него доступны исходные коды: PDB также должен быть проиндексирован.
Мы начнем с предложения исходного кода (с включенными комментариями исходного файла) для библиотек базовых классов .NET (System, System.io, System.collections, System.Configuration, System.Threading, System.net, System.security, System.Runtime, System.Text и т. Д.), ASP.NET (System.Web), Windows Forms (System.Windows.forms), Ado.net (System.data), XML (System.xml) и WPF (System .Windows).Затем мы добавим больше библиотек в предстоящих месяцах (включая WCF, Workflow и Linq).Исходной код будет выпущен по справочной лицензии Microsoft (MS-RL).
Кажется, System.Web.Routing сюда не включен.
Однако вы можете скачать исходный код MVC, то вы сможете использовать загруженные вами PDB-файлы из этого источника.
Другие советы
Я видел, как кого-то уже забанили за эти слова, но...
Не похоже, что вы можете получить представление о том, что происходит на уровне исходного кода, но если вам действительно нужен ответ о том, почему что-то может не работать (и StackOverflow не может помочь), используя Рефлектор.NET получить код C# из скомпилированной сборки (dll или exe) — довольно хороший вариант.Этот инструмент довольно прост в использовании для любого опытного .NET-разработчика и может дать очень хорошее представление о том, что происходит.
Многие из нас, кто работает на переднем крае .NET, нуждаться использовать его, потому что другого быстрого метода зачастую не существует, и для тех, у кого нет подключений к MVP или стороне Microsoft, обычно это лучший вариант. только способ получить «внутреннюю историю».
Я немного удивлен, что для этого он загрузил файл символов;В прошлый раз, когда я смотрел, там были только символы для небольшого подмножества (в основном 2.0) фреймворка.У вас сейчас проблемы с этим кодом?Если да, опубликуйте подробную информацию об исключении/неожиданном поведении.Если вам просто интересно, то либо:прочитать документация, или б: возможно подглядывать за отражатель (предостережение:"ИАНАЛ").
Похоже, вы говорите о .NET, так что на самом деле вы видите байт-код IL.Я не думаю, что Microsoft выпускает символы с исходным кодом для .NET, поэтому VS не сможет вам помочь.
Используйте .NET Reflector, чтобы проверить, что делает функция.