Как уменьшить падение программы на C ++ - PullRequest
0 голосов
/ 05 октября 2011

У меня есть большое программное обеспечение, реализованное на C ++, построенное на VC10 SP1. Существует более 15 миллионов строк исходного кода. Поставляется на платформе Windows, как win32, так и x64. Из отчетов о сбоях среднее время до сбоя составляет всего около 40 минут.

Я хочу сделать все возможное, чтобы уменьшить количество сбоев и увеличить среднее время до сбоя. Может кто-нибудь поделиться тем, что вы сделали на практике, или есть какие-то предложения? Любой комментарий приветствуется.

Спасибо

Джеффри

Ответы [ 4 ]

2 голосов
/ 05 октября 2011

Это называется отладкой или искусством поиска ошибок.

Существует много способов улучшить качество программного обеспечения.

На этапе проектирования :

  • Отзывы о дизайне
  • Код Отзывы
  • Инструменты статического анализа

Во время Ранней жизни :

  • Модульное тестирование
  • Нечеткое тестирование (где применимо)
  • Интеграционное тестирование
  • Сквозное тестирование

Вся партия может быть выполнена на инструментальном коде (например, с активированной отладкой STL, с определенными распределителями памяти отладки, с подключенными инструментами мониторинга / отладчиками).

Примечание. Тестирование модуля / нечеткого кода легче применять, если приложение состоит из нескольких компонентов, так как целью является тестирование как можно меньших блоков.

Примечание: не забывайте расширять набор тестов, когда вы реализуете новые функции или исправляете ошибки, чтобы предотвратить регрессию.

В течение Life :

  • Сообщения о человеческих авариях (и попытках воспроизвести ...) не так эффективны
  • Автоматические отчеты о сбоях (в Windows есть утилиты) действительно хороши

Вы должны улучшать качество.

К вашему сведению: программное обеспечение, над которым я работаю, работает 24 часа в сутки, 7 дней в неделю, когда у нас происходит сбой один или два раза, мы считаем, что мы облажались; 45 минут определенно не так.

1 голос
/ 05 октября 2011

«Продлить среднее время до сбоя»? Как насчет исправления кода, чтобы он не зависал? Тролль вопрос?

Если нет, звучит как утечка памяти. Запустите его через профилировщик памяти: http://en.wikipedia.org/wiki/List_of_performance_analysis_tools#C_and_C.2B.2B

0 голосов
/ 05 октября 2011

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

Видя, что ваша программа дает сбой примерно через 40 минут, кажется, это проблема с утечка памяти .Поскольку вы используете VC, VS предоставляет хороший механизм для обнаружения и локализации утечек памяти .

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

0 голосов
/ 05 октября 2011

Некоторые предложения (рядом с очевидной отладкой):

...