Ответ 1
См. Отладка элементов управления временем разработки (MSDN).
Есть ли хороший способ отладки ошибок в Visual Studio Designer?
В нашем проекте у нас есть тонны UserControls и многих сложных форм. Для сложных, Дизайнер часто бросает различные исключения, которые не очень помогают, и мне было интересно, есть ли хороший способ выяснить, что пошло не так.
Язык С#, и мы используем Visual Studio 2005.
См. Отладка элементов управления временем разработки (MSDN).
Мне удалось отладить некоторые проблемы конструктора элементов управления, запустив второй экземпляр VS, а затем из вашего первого экземпляра VS выполните команду "Отладка → Прикрепить к процессу" и выберите "devenv".
Первый экземпляр VS - это место, где вы будете устанавливать точки останова. Используйте второй экземпляр для загрузки конструктора, чтобы запустить код "designer".
Это было болью в 2005 году и до сих пор в 2015 году. Точки останова часто не попадают, вероятно, из-за того, что сборники были теневыми копиями или что-то от дизайнера (?). Лучшее, что вы можете сделать, это разбить вручную, введя вызов Debugger.Break()
. Вы можете заключить его в компилятор как условный:
#if DEBUG
System.Diagnostics.Debugger.Break();
#endif
int line_to = break; // <- if a simple breakpoint here does not suffice
У меня это случалось много раз, и это настоящая боль.
Во-первых, я предлагаю попытаться отслеживать трассировку стека, предоставляемую дизайнером, хотя я обнаружил, что часто просто перечисляет кучу внутренних вещей, которые мало используются.
Если это не сработает, попробуйте выполнить компиляцию и определить исключение. Вы действительно летели слепым, что является проблемой. Затем вы можете попробовать просто запустить код и посмотреть, какое исключение возникает при его запуске, что должно дать вам дополнительную информацию.
Подход с последним вздохом может состоять в том, чтобы удалить весь незагенерированный код из формы и постепенно повторно ввести его для определения ошибки.
Если вы используете настраиваемые элементы управления, вы можете вручную удалить сгенерированный код, связанный с настраиваемыми элементами управления, если предыдущий метод все еще приводит к ошибке. Затем вы можете повторно ввести это шаг за шагом таким же образом, чтобы определить, какой пользовательский элемент управления вызывает проблему, а затем отлаживать его отдельно.
В принципе, насколько я могу судить, нет никакой реальной проблемы вокруг проблемы, кроме как немного ее вырезать!
Я обнаружил, почему иногда точки останова не попадают. В диалоговом окне "Прикрепить к процессу" тип "Прикрепить к:" должен быть "Выбрать..." "d.
Как только я перешел на "Управляемый 4.0, 4.5", были удалены точки останова для приложения WinRT. Источник: Отладка дизайнера в WinRT.
Каждый из них отличается, и иногда они могут быть неясными. В качестве первого шага я бы сделал следующее:
Вы можете запустить второй экземпляр VS и присоединить его к первому экземпляру VS (Ctrl + Alt + P). В первом случае установите точки останова, во втором случае запустите конструктор, и точка останова будет срабатывать. Вы можете выполнить код, но Edit-and-Continue не будет работать.
Для редактирования и продолжения работы установите параметры управления библиотекой для запуска VS с аргументом командной строки, являющимся именем файла решения. Затем вы можете просто установить точки останова и нажать F5. Он будет отлаживаться так же, как и код пользователя! В качестве дополнительной заметки вы можете сделать это и надстройками VS и Office.