Как я могу отладить эту строку кода в Visual Studio? - PullRequest
1 голос
/ 15 февраля 2009

У меня есть следующая строка кода в VS2008.

    VirtualPathData virtualPathData = 
        RouteTable.Routes.GetVirtualPath(_viewContext.RequestContext, 
        "Home", 
        pageLinkValueDictionary);

Я хочу отладить этот GetVirtualpath(..) метод .. чтобы увидеть, что он пытается сделать.

Я предполагаю, что мне нужно получить символы с сервера символов MS.

То, что я сделал, было

  • Выключить Включить только мой код
  • Включить Включить поддержку исходного сервера
  • Отображение окна Modules при отладке (для ручной загрузки нужного модуля)

Компиляция в режиме отладки, установка точки останова в этой строке и выполнение отладки. Когда я попадаю в очередь, я вручную загружаю System.Web.Routing(..) с MS Symbol server . Это работает (pdb загружается локально), и когда я вхожу в эту строку, я иду к некоторому коду Dissassemler: (

Кто-нибудь может увидеть, что я делаю не так?

Ответы [ 4 ]

3 голосов
/ 18 мая 2009

То, что файл символов загружен, не означает, что для него доступны источники, pdb также должен быть проиндексирован.

С Объявление Скотта Гатри :

Начнем с предложения источника код (с комментариями к исходному файлу включены) для базового класса .NET Библиотеки (System, System.IO, System.Collections, Конфигурация системы, 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 Source , тогда вы сможете использовать pdbs, которые вы скачали с этим источником.

1 голос
/ 18 мая 2009

Я видел, что кто-то уже успел сказать это, но ...

Не похоже, что вы можете получить представление о происходящем на уровне источника, но если вам действительно нужен ответ о том, почему что-то может не работать (и StackOverflow не может помочь), используя Reflector.NET , чтобы получить код C # из скомпилированной сборки (dll или exe) - довольно хороший вариант. Этот инструмент довольно прост в использовании для любого опытного разработчика .NET и может дать очень хорошее представление о том, что происходит.

Многие из нас, кто работает на переднем крае .NET , нуждаются в , чтобы использовать его, потому что часто нет другого быстрого метода, а для тех, у кого нет подключений MVP или Microsoft, обычно это только способ получить «внутреннюю историю».

0 голосов
/ 15 февраля 2009

Я немного удивлен, что он скачал файл символов для этого; В прошлый раз, когда я смотрел, были только символы для небольшого подмножества (в основном 2.0) фреймворка. У вас сейчас проблемы с этим кодом? Если это так, опубликуйте детали исключения / неожиданного поведения. Если вам просто любопытно, то либо: прочитайте документацию , либо b: возможно отследите отражатель (предостережение: " IANAL").

0 голосов
/ 15 февраля 2009

Похоже, вы говорите о .NET, так что это фактически байт-код IL, который вы видите. Я не думаю, что Microsoft выпускает символы с исходным кодом для .NET, поэтому VS не может вам помочь.

Используйте .NET Reflector для проверки того, что делает функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...