Отладка исходного кода .NET в Windows 7 - PullRequest
2 голосов
/ 15 сентября 2009

Мы пытаемся отладить с помощью проблемы SQL Server Compact на 64-разрядном настольном компьютере Windows 7 Enterprise RTM, работающем под управлением .NET Framework 3.5, SP1. Приложение постоянно падает, и мы пытаемся настроить отладку .NET Framework для Visual Studio 2008, SP1. Используя рассредоточенные ресурсы по Интернету, мы устанавливаем параметры:

  • Сервер символов = http://referencesource.microsoft.com/symbols
  • Меню Инструменты -> Параметры -> Отладка -> Just My код = отключено
  • Меню Инструменты -> Параметры -> Отладка -> Включить Отладка .NET Framework = Включено
  • Инструменты -> Параметры -> Отладка -> Включено Поддержка исходного сервера = Включено

Когда мы запускаем приложение, мы не можем войти в исходный код и все равно получаем ошибку

В этом месте нет исходного кода.

Мы получаем трассировку стека, указывающую, что символы SQL Server Compact загружены, и когда мы щелкаем сведения в диалоговом окне с сообщением об ошибке, мы получаем сообщение о том, что файл SQL Server Compact PDB был загружен правильно .

Я нашел сообщение в блоге, указывающее, что это проблема с символами, которые не обновляются для Windows 7, пока что Отладка исходного кода Visual Studio 2008 SP1 .NET Framework .

Однако я не могу найти ничего официального по этому вопросу. Я что-то пропустил? Правда ли, что символы Windows 7 неверны? Если да, то когда они будут обновлены?

Моя сборка Windows 7 является 64-битной. Мы также только что протестировали этот же сценарий на 64-битной Windows Vista и получили ту же проблему и ошибку. Он говорит, что загрузил PDB, но утверждает, что в этом месте нет исходного кода.

Ответы [ 2 ]

1 голос
/ 06 ноября 2009

Я предполагаю, что ваши DLL-файлы являются сборкой релиза, и поэтому JIT-компилятор оптимизирует некоторые вызовы функций (он часто содержит небольшие функции). Это означает, что когда среда выполнения пытается преобразовать соединенный код обратно в PDB, это приводит к путанице.

Попробуйте добавить INI-файл в корень вашего приложения; поэтому, если ваше приложение prog.exe, добавьте prog.ini со следующим содержимым;

[.NET Framework Debugging Control] 
GenerateTrackingInfo=1
AllowOptimize=0

Это остановит компилятор JIT от оптимизации вызовов и позволит вашим файлам PDB ссылаться на правильные вызовы в вашем коде. Вам нужно будет перезапустить приложение, и поскольку оно работает без оптимизаций, оно замедлит его до уровня сборки DEBUG, но вы сможете правильно подключить отладчик.

0 голосов
/ 09 ноября 2009

В свойствах сборки проекта есть возможность выбрать архитектуру для запуска - x86 или x64. Вы можете попробовать переключиться на x86 для целей отладки; это может позволить вам отладить и найти вашу проблему.

...