Вопрос

У меня есть следующая строка кода в 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, чтобы проверить, что делает функция.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top