Отладка приложений с графическим интерфейсом в C ++ - PullRequest
4 голосов
/ 18 декабря 2008

Предыстория: в настоящее время я отлаживаю приложение, написанное с использованием пользовательского интерфейса GUI на C ++. Мне удалось выявить большинство ошибок, но у ошибок, с которыми у меня больше всего проблем, обычно есть общая тема. Все они, похоже, связаны с обновлением, перерисовкой или обновлением экрана в соответствии с предоставленными данными. Отлаживать это непросто, потому что я не могу разбить каждое обновление, и большая часть этого материала зависит от времени, поэтому контрольные точки иногда «исправляют» ошибку.

В: У кого-нибудь есть советы по отладке графических интерфейсов на основе Windows, особенно в отношении обновления отдельных компонентов?

Ответы [ 4 ]

6 голосов
/ 18 декабря 2008

Я согласен с двумя мониторами или даже удаленной отладкой, чтобы уменьшить вмешательство в сообщения.

Я также очень рекомендую шпионские утилиты. Они позволяют увидеть, какие сообщения отправляются в систему. Одной из таких программ является Winspector. http://www.windows -spy.com /

3 голосов
/ 18 декабря 2008

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

В сообщении укажите значения интересующей вас переменной.

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

Наконец, попробуйте загрузить любую из экспресс-версий .NET и используйте Winforms, чтобы попытаться проверить особенно проблемные области. Хотя Winform является собственной платформой, существует высокая степень соответствия между его контролем и теми, которые предоставляет Windows.

Я поддерживаю симуляцию Project Mercury Capsule в качестве дополнения для Orbiter Space Simulator. Он написан на C ++ и должен использовать Win32 напрямую для некоторых панелей и диалогов. Были случаи, когда я запускал VB6 (позже VB.NET) для проработки какого-то сложного взаимодействия, а затем переводил его в эквивалент Win32 в C ++.

Однако это последнее средство.

3 голосов
/ 18 декабря 2008

Это может не помочь, но я нашел использование двух мониторов полезным в этом сценарии. У меня есть отладчик на одном экране и приложение на другом. Затем я могу перейти по коду и увидеть, как приложение обновляется или выполняет что-либо еще на другом экране. По-прежнему есть проблемы с фокусировкой, но, по крайней мере, я вижу, когда она перерисовывается.

0 голосов
/ 18 декабря 2008

Наличие двойного экрана действительно помогает при отладке проблемы обновления / перерисовки для элементов управления Windows и пользовательского интерфейса.

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

Если у вас не может быть второго экрана, попробуйте установить приложение рядом, чтобы приложение и отладчик не вмешивались.

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