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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BioNicle12
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 17
#1

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

23.01.2014, 10:52. Просмотров 299. Ответов 2
Метки нет (Все метки)

Доброго времени суток, в с++ я пока только осваиваю азы и т.п.

Серверное приложение для не особо сложных манипуляций, но написано не мной, я только пытаюсь разбираться в коде), недавно заметил такую странность, если через браузер попытаться подключиться к ее открытому порту, то на одном ПК с вин2008 программа выдает ошибку, мол неизвестный пакет и рушится. Попробовал на тестовом ПК вин7, просто выдает туже ошибку, но продолжает дальше работать.

Вопрос такой, отчего на вин2008 программа крошится и как можно выяснить причину, дабы потом ее устранить, может есть какой софт в помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 10:52     Крэш программы на одном ПК
Посмотрите здесь:

Крэш программы при работе с кострукторами - C++
Пробую разобраться с конструкторами. Увы пока крэш ( Подскажите #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstring> ...

Односвязный список. Крэш программы при выводе - C++
Доброго времени суток, господа. Извиняюсь за повторную тему (вчера такую же создавал с другим вопросом, но не смог найти её :( ) Проблема...

Найти минимальный элемент и все элементы, расположение в одном ряду и в одном столбце с минимальным - C++
Дана квадратная матрица A порядка n. Составить программу, которая находит минимальный элемент и все элементы, расположение в одном ряду и в...

Несколько условий в одном if - C++
например в паскале можно if (a>b)and(a<10) в с++ как этосделать?

Несколько условий в одном IF - C++
Есть функция int settings(int *life_time, int *cur_yea, int *cur_mon, int *cur_day) { char slovo; long fail_long=0;//...

В одном шаге от счастья. - C++
#include <iostream> using namespace std; const int size = 6; int main() { freopen("INPUT.TXT", "r", stdin); ...

Разные языки в одном файле - C++
В общем имею файл в котором записаны последовательно тексты на разных языках. язык1 язык2 язык3 .. языкN Имею N парсеров...

Dll и exe в одном файле - C++
Здравствуйте! Можно ли добавить свою dll в файл exe так чтобы при компиляции получился один файл. И при переносе не надо было таскать...

удержание громкости на одном уровне - C++
не знал куда обратиться, если кто знает куда лучше - отпишите. цель: удерживать громкость глобально(по всей системе, всего) на одном...

Обьединение двух массивов в одном - C++
#include <iostream> #include <cstdio> #include <time.h> using namespace std; void main(){ srand(time(NULL)); int a; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2918 / 1347 / 134
Регистрация: 29.11.2010
Сообщений: 2,721
23.01.2014, 11:15     Крэш программы на одном ПК #2
Цитата Сообщение от BioNicle12 Посмотреть сообщение
Вопрос такой, отчего на вин2008 программа крошится и как можно выяснить причину, дабы потом ее устранить, может есть какой софт в помощь.
Вопрос такой, а зачем вы разбираетесь в причинах падения стороннего софта? Судя по тому, что как минимум два браузера выдают ошибку про левый пакет, похоже, что ваше приложение не рассчитано на подключение из браузера.

Таким образом, с тем же успехом после браузера можно разбираться, почему падает SSH клиент, натравленный на порт этого приложения, а затем VPN-клиент, а потом можно взяться за Х-ы или ICQ.
Вы собираетесь устранить падения ВСЕХ приложений при подключении к вашему приложению? Даже тех, которые еще только выйдут?
Убежденный
Системный программист
Эксперт С++
15246 / 6878 / 1092
Регистрация: 02.05.2013
Сообщений: 11,254
Завершенные тесты: 1
23.01.2014, 12:16     Крэш программы на одном ПК #3
Цитата Сообщение от 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) Если проблема воспроизводится только на определенных версиях программы, а код самой
программы помещен в систему контроля версий, то можно попробовать найти в ней те
изменения, которые привели к возникновению ошибок.
Yandex
Объявления
23.01.2014, 12:16     Крэш программы на одном ПК
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru