|
0 / 0 / 0
Регистрация: 17.12.2024
Сообщений: 49
|
|
Как можно обрабатывать краш программы?17.06.2025, 11:08. Показов 3542. Ответов 45
Всем привет. Возник такой вопрос, допустим есть программа на c++ для винды, иногда она может крашется ошибка чтения памяти, необработанные исключения, наверное, что то еще может быть. Так вот какие есть практики быстро отлавливать и править такие истории?
1. Можно использовать логи, не всегда помогают 2. Можно использовать дебаггер, для этого нужен дамп памяти с ошибкой 3. Тестирование, ну, это понятно Используете ли вы общий try catch в main, чтобы отлавливать все исключения и записывать их в логи(файлы, Event Viewer)? Оправдано ли вообще делать дампы при ошибке на уровне программы? Что еще посоветовать можете?
0
|
|
| 17.06.2025, 11:08 | |
|
Ответы с готовыми решениями:
45
Подскажите как убрать краш программы Краш программы QML SetSource() краш программы |
|
Злостный нарушитель
10299 / 5722 / 1268
Регистрация: 12.03.2015
Сообщений: 26,497
|
|
| 17.06.2025, 11:25 | |
|
Для локализации таких ошибок мне хватает ассёртов, грамотно расставленных по исходнику.
0
|
|
|
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,100
|
|||||
| 17.06.2025, 17:46 | |||||
0
|
|||||
|
523 / 373 / 66
Регистрация: 09.03.2016
Сообщений: 3,959
|
|||||||||||
| 18.06.2025, 03:22 | |||||||||||
|
Создаём листбокс....
делаем ему ---->> SendMessage(GetDlgItem(hWnd, IDC_LISTBOX1), LB_RESETCONTENT, 0, 0); И заполняем 455 адресами ...
Утечка памяти мегабайта четыре.... И делаеться вот такое...
0
|
|||||||||||
|
523 / 373 / 66
Регистрация: 09.03.2016
Сообщений: 3,959
|
|
| 18.06.2025, 03:28 | |
|
Verevkin,
Куда ассёрт вставить?
0
|
|
|
Злостный нарушитель
10299 / 5722 / 1268
Регистрация: 12.03.2015
Сообщений: 26,497
|
|||||||||||||||||||||||||||
| 18.06.2025, 08:04 | |||||||||||||||||||||||||||
|
Примеры:
1
|
|||||||||||||||||||||||||||
|
6180 / 2875 / 1042
Регистрация: 01.06.2021
Сообщений: 10,546
|
||
| 18.06.2025, 12:50 | ||
|
Verevkin, я чёт не очень доверяю assert:
0
|
||
|
523 / 373 / 66
Регистрация: 09.03.2016
Сообщений: 3,959
|
|||||||||||
| 18.06.2025, 12:56 | |||||||||||
|
Да я понимаю. Я ими не пользуюсь...
Думаю головою. Пока получаеться. В простых случаях. printf( я вставляю... Или вот такое
Можно несколько переменных, и с комментариями.
0
|
|||||||||||
|
Злостный нарушитель
10299 / 5722 / 1268
Регистрация: 12.03.2015
Сообщений: 26,497
|
||
| 18.06.2025, 12:58 | ||
|
0
|
||
|
523 / 373 / 66
Регистрация: 09.03.2016
Сообщений: 3,959
|
|
| 18.06.2025, 13:07 | |
|
if(условие){printf(); getchar();};
Вот и весь ассёрт... (ассёрт конечно профессионально... Но грубовато как то...) === Жёсткое вылеталово из программы. Может мне не надо из неё вылетать, а посмотреть пятый, шестой проход и.т.д.
0
|
|
|
336 / 129 / 18
Регистрация: 26.12.2010
Сообщений: 501
|
|
| 25.06.2025, 15:52 | |
|
Наталья8, как по мне, лучше писать через OutputdebugstringA и блоки типа #ifdef _DEBUG..
А так принтф тоже нормально, кто как умеет, так и делает. Я вот исключения не люблю, там фиг поймешь что и откуда прилетает.
1
|
|
|
523 / 373 / 66
Регистрация: 09.03.2016
Сообщений: 3,959
|
||||||
| 26.06.2025, 01:23 | ||||||
|
В дебаг выводит, в релизе нет
(msvs 2017) Если сверху поставить --- #define _DEBUG 1 То и в релизе выводит...
Я обычно в релизе работаю. На дебаг не переключаюсь. Привычка после таких глюков -- в дебаг работает, в релизе нет...
0
|
||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||
| 26.06.2025, 12:36 | |||||
_/Добавлено через 1 минуту std::cerr![]() Добавлено через 1 минуту e.what() конечно же "тишина" ?
1
|
|||||
|
523 / 373 / 66
Регистрация: 09.03.2016
Сообщений: 3,959
|
|||
| 26.06.2025, 13:59 | |||
|
Бывает и UB... Кто из нас ни без греха... Добавлено через 1 минуту Добавлено через 6 минут Макросы ? Иногда пользую... Они зелёные такие. Люблю всё зелёное... Добавлено через 2 минуты Соберём тебе ещё на одну мядаль.... Добавлено через 1 минуту Бывают же где то люди серьёзные... Не то что вы всёобсиратели.
0
|
|||
|
523 / 373 / 66
Регистрация: 09.03.2016
Сообщений: 3,959
|
|
| 26.06.2025, 14:17 | |
|
0
|
|
|
Отпрыск ChatGPT
33 / 29 / 4
Регистрация: 18.06.2019
Сообщений: 152
|
|||||||||||
| 09.07.2025, 09:25 | |||||||||||
0
|
|||||||||||
|
фрилансер
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,054
|
|
| 09.07.2025, 09:33 | |
|
Azawa, слышал ли что-нибудь про RAII ?
0
|
|
|
Отпрыск ChatGPT
33 / 29 / 4
Регистрация: 18.06.2019
Сообщений: 152
|
|||||||
| 09.07.2025, 09:52 | |||||||
|
Более низкий уровень если нужно ловить специфичные исключения от ОС (вроде нарушения целостности памяти процесса EXCEPTION_ACCESS_VIOLATION) - это структурная обработка исключений (SEH).
0
|
|||||||
|
фрилансер
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,054
|
|
| 09.07.2025, 11:33 | |
|
0
|
|
| 09.07.2025, 11:33 | |
|
Помогаю со студенческими работами здесь
20
Краш программы после вызова Inverse_element Краш программы
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|