Visual Studio - некоторые точки останова не ломаются - PullRequest
3 голосов
/ 18 января 2011

У меня есть решение в Visual Studio 2010 с 9 проектами, которое находится под контролем исходного кода с помощью Source Safe. Я только что проверил свой жесткий диск и обновил до Win7 x64 с WinXP x86 (давно пора!). Когда я проверил решение на «новой» машине, некоторые части теперь не работают должным образом, поэтому я пытаюсь отладить его.

Возможно, стоит отметить, что я раньше работал в VS2008. Когда я обновил, я впервые открыл проект в VS2008, чтобы убедиться, что он работает, и я заметил, что были проблемы, которые мне нужно было отладить. Я установил некоторые контрольные точки, и пара работала, а пара - нет. Я не мог сразу понять, почему некоторые не ломаются, поэтому я решил пойти дальше и обновить проект до VS2010, надеясь, что он сработает сам. Это не так.

Основной проект вызывает публичную подпрограмму в публичном модуле в проекте, который является библиотекой, на которую ссылается любой другой проект. У меня есть точка останова на главной форме Form_Load, которая успешно завершается, как только код начинает работать. Form_Load вызывает вышеупомянутую публичную подпрограмму, которая также имеет точку останова. Но эта точка останова НЕ ломается. Другими словами, отладчик остановится на вызове ProjectStartupActions(), но не остановится на определении Public Sub ProjectStartupActions() или любой строке в нем.

Если я произнесу «Перейти к определению» в дополнительном вызове в Form_Load, он переместится в правильное место, где у меня есть точка останова, поэтому я уверен, что правильно установил точку останова.

Мой проект >> Отладка >> Конфигурация имеет значение «Активно (отладка)», а Платформа «Активна (любой процессор)» для всех проектов. Для дальнейшего подтверждения того, что он должен работать в Debug, а не в Release, если я открою окно обозревателя в папке «Debug» для проекта библиотеки и очищу проект, папка будет очищена. Когда я перестраиваю или запускаю файлы все заменяются.

Спасибо за любую помощь.

О да, я также внес изменения в код Public Sub ProjectStartupActions(). Я добавил MsgBox("Hello") к первой строке в сабвуфере, но он никогда не появляется.

Ответы [ 2 ]

2 голосов
/ 19 января 2011

Установите цель на x86 для ее отладки. - Ганс Пассант

Это сработало! Спасибо!! Я использовал Configuration Manager для изменения цели для всего решения на x86.

Но почему это сработало? Почему опция «Любой процессор» сломалась в основном проекте, но не в библиотеке?

0 голосов
/ 18 января 2011

О да, я также внес изменения в код Public Sub ProjectStartupActions().Я добавил MsgBox("Hello") к первой строке в сабе, но она никогда не всплывает.

Похоже, что зависимости вашего проекта не верны.Убедитесь, что основной проект формы зависит от библиотеки project , которая имеет функцию ProjectStartupActions() (и не зависит от некоторой уже собранной сборки библиотеки).

Это должно сделать его таким VSпри необходимости перестроит библиотечную сборку и обратится к новой сборке.

Возможно, вам потребуется выполнить полную очистку / перестройку, чтобы снова выполнить синхронизацию.Вам также может понадобиться проверить и обновить все имеющиеся у вас проекты / сценарии развертывания.

...