|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
Дамп строки и автоматический запуск при падении25.01.2012, 22:22. Показов 2191. Ответов 8
Метки нет (Все метки)
Есть приложение, ему по сети передаются разные данные. От определенных данных приложение падает.
При получении данных - они сначала записываются в буфер размером 5 мегабайт (массив чаров), а дальше буфер разбирается в другие маленькие буферы и в них происходит обработка, которая иногда приводит к падениям. Дак вот, мне, при падении, нужно: 1. сохранить в текстовый файл содержимое пятимегабайтного буфера 2. запустить это приложение снова. Подскажите как непосредственно в коде выполнить участок кода при падении? А также как запустить приложение снова?
0
|
|
| 25.01.2012, 22:22 | |
|
Ответы с готовыми решениями:
8
Автоматический запуск Командной строки с выполнением определённой команды Автоматический запуск приложения при загрузке ОС |
|
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
| 25.01.2012, 22:34 | |
|
Можно перехватить SIGSERV, записать своё хозяйство и запустить что надо через system(). Но лучше не костыли подставляй, а разберись с падениями.
1
|
|
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
| 25.01.2012, 22:57 [ТС] | |
|
Я с падениями разобрался. Сейчас, пока пишу сервак, его легко отладить, т.к. он работает в 1% нагрузки и проц справляется в debug режиме... и приложение не падает.
А конечную версию придется компилить уже с оптимизациями, в Release режиме, т.к. нагрузка будет на порядки больше. И фиг знает что там будет, какой хлам на него будут слать. Все дыры сразу не отловить... Тем более аптайм сервера должен стремиться к 100%. Точнее допуск не более 30 секунд неработы. По буферу я могу легко воспроизвести ошибку на другом компьютере, подправить там код, скомпилить и быстро запустить на сервере исправленную версию. При этом не ну нужно удерживать его от падения, только записать буфер, заново запустить и пускай себе дальше падает со всеми процессами освобождения памяти и т.д. Вы можете дать пример кода?
0
|
|
|
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
||||||
| 25.01.2012, 23:31 | ||||||
1
|
||||||
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
| 26.01.2012, 00:45 [ТС] | |
|
А можете поподробнее, почему в памяти висят 2 копии? Я так понял это связано с system(), который блокирует приложение до тех пор, пока не будет выполнено приложение запущенное им?
Добавлено через 5 минут Вот нашел на каком-то сайте что установка вконце символа & делает system("command here &"); неблокирующей. И еще вроде есть другие функции... впринципе наверно действительно лучше извне сделать скриптик и запускать им. А так, вцелом, если убрать system() из вашего кода, то приложение завершится нормально при ошибке? Просто я не могу никак понять как происходит перехват ошибки и что происходит дальше. Вообще ведь при любой ошибке сразу запускаются деструкторы, освобождается память и приложение полностью корректно завершается. А если перехватить ошибку, мне не понятно что происходит после выполнения void handler(int sig)
0
|
|
|
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
| 26.01.2012, 01:04 | |
|
На самом деле там в конце handler был exit(), тогда всё нормально завершиться, в процессе экспериментов с перезапуском потерял. Перехват ровно такой же, как любых других сигналов: если по каким-либо причинам пришёл сигнал и для него есть обработчик, туда сразу передается управление. После его возврата из функции-обработчика программа начинает работать с того места, где поймала сигнал.
1
|
|
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
| 26.01.2012, 04:16 [ТС] | |
|
Т.е. если exit() вконец void handler(int sig) не вставить, то программа завершена не будет и продолжит работать?
И еще, пишут что exit немедленно завершает процесс и при этом никакие ресурсы корректно не освобождаются. Чем это плохо и можно ли сделать как-то правильнее? Извиняюсь за такие вопросы, сейчас нет возможности самому запустить код и посмотреть.
0
|
|
|
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|||
| 26.01.2012, 19:01 | |||
|
1
|
|||
|
19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
| 26.01.2012, 22:04 [ТС] | |
|
Нет, спасибо, вы полностью раскрыли тему
0
|
|
| 26.01.2012, 22:04 | |
|
Помогаю со студенческими работами здесь
9
Автоматический запуск приложений при загрузке системы Автоматический запуск формы при открытии документа Автоматический запуск макроса при старте Word-а Автоматический запуск программы при загрузке Windows
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|