Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Крэш программы на одном ПК - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Числа по основанию 2 и 8. Выполнить операцию умножения. http://www.cyberforum.ru/cpp-beginners/thread1079245.html
помогите исправить код условие задачи: Числа по основанию 2 и 8. Выполнить операцию умножения. #include <iostream> #include <cmath> #include <stdio.h> using namespace std; int main()...
C++ Написать программу перевода из 10 сс в 16 сс. помогите написать программу перевода из 10 сс в 16 сс (целая и дробная часть) и числа >10 заменить соответственно на A,B,C... http://www.cyberforum.ru/cpp-beginners/thread1079237.html
C++ Калькулятор (обратная польская запись)
Есть калькулятор к нему нужно добавить "(", ")".Погуглив понял, что нужно внедрять обратную польскую запись.Помогите внедрить или подскажите другой метод.
C++ Вывод второго самого большого множителя числа N
Доброго времени суток. Задание в том что, надо вывести второй самый большой множитель числа N. Например если я ввожу 48, то ответ должен быть 16 - это второй самый большой множитель ( первый самый...
C++ Определить, верно ли утверждение: сумма элементов каждого i-го столбцы матрицы больше суммы i-й строки. http://www.cyberforum.ru/cpp-beginners/thread1079194.html
Дана квадратная матрица натуральных чисел, (получаемая через rand()). Определить, верно ли утверждение: сумма элементов каждого i-го столбцы матрицы больше суммы i-й строки.
C++ Как найти строку которая перед "=" и после Есть файл в котором: NAME = 338magnum MAXCARRY = 30 PRICE = 125 BUYAMT = 10 ................ подробнее

Показать сообщение отдельно
Убежденный
Системный программист
Эксперт С++
15631 / 7140 / 1129
Регистрация: 02.05.2013
Сообщений: 11,581
Записей в блоге: 1
Завершенные тесты: 1
23.01.2014, 12:16
Цитата Сообщение от BioNicle12 Посмотреть сообщение
Вопрос такой, отчего на вин2008 программа крошится и как можно выяснить причину, дабы потом ее устранить, может есть какой софт в помощь.
1) Запустить программу под отладчиком.

Способ настолько очевидный, что комментариев не требует.
Цеплять отладчик к службе, кстати, можно с помощью ключа реестра
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

2) Организовать в программе нормальную проверку и обработку ошибок.

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

3) Реализовать логгирование/трассировку.

Даже в простейшем виде (запись в текстовый файл) это приносит ощутимую
пользу и позволяет увидеть, что там на самом деле происходит, за "кулисами".

4) Обложить все тестами, с ног до головы.

Обтестировать все и вся, чтобы при малейшем нарушении срабатывал ассерт.
Тесты запускать постоянно, на каждый билд и в фоне, и просто так, для успокоения.
Постоянно добавлять новые тесты, тестировать пограниченые условия, писать
smoke-тесты для новых компонентов, использовать фаззинг и стресс-тесты.

5) Реализовать в программе систему сбора крэш-дампов и "обратной связи".

Например, можно поставить обработчик исключений (SetUnhandledExceptionFilter), а
при возникновении исключения записать крэш-дамп процесса (MiniDumpWriteDump).
Отладочные символы, сгенерированные при построении программы (.pdb), нужно сохранить.
Позже такой крэш-дамп можно открыть в отладчике (WinDbg, например) и разобрать с
нужной детальностью, что именно произошло и почему. Есть, кстати, готовые библиотеки
под это дело:

CrashRpt
http://code.google.com/p/crashrpt

breakpad
http://code.google.com/p/google-breakpad

6) Если проблема воспроизводится только на определенных версиях программы, а код самой
программы помещен в систему контроля версий, то можно попробовать найти в ней те
изменения, которые привели к возникновению ошибок.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru