powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибки при Run, но всё работает при Debug.
29 сообщений из 29, показаны все 2 страниц
Ошибки при Run, но всё работает при Debug.
    #38840726
Фотография psih-stalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
Работаю в Code::Blocks. Делаю программу, очень простую - калькулятор, решающий заданные выражения типа "2+2*2" с длинными числами. Но не в этом суть. При попытке запустить программу в обычном режиме (просто Run) и решить выражение, она решает и вылетает. При запуске в режиме Debug - решает и запрашивает следующее выражение - как и должно быть.
Кто-нибудь знает, с чем это может быть связано?
И да, отладчик у меня не тормозит на breakpoint - спасибо тараканам Code::Blocks.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840735
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psih-stalkerс чем это может быть связано?
Чаще всего - не инициализированные переменные, обращение к памяти вне запрошенного куска.
При "вылетает" обычно пишется сообщение, а в нём информация - достаточная для нахождения
места "вылета".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840751
Фотография psih-stalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

У меня "вылетает" так: "Прекращена работа программы..."

Dimitry SibiryakovЧаще всего - не инициализированные переменные, обращение к памяти вне запрошенного куска.
В первом случае показывается соответствующий warning. У меня таковых нет. Во втором же в режиме Debug появляются ошибки Segmentation Fault, которых уже тоже не имеется (где-то здесь я начал ненавидеть указатели).

Может быть, это связано с тем, как Run и Debug запускают программу?

P.S. Ничего не делал в коде после опубликования вопроса - стал через раз вылетать, иногда не давая результат перед этим. Странно.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840848
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
где-то здесь я начал ненавидеть указателиЗнаковое событие. А без них - никуда в сях.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840899
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psih-stalker,

В 90% случаев ошибку сразу видно при просмотре свежим взглядом.
Так что вы не стесняйтесь, покажите код
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840911
Фотография psih-stalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,

Кода много, аж в шести файлах. Прикладываю.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840918
Фотография psih-stalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonгде-то здесь я начал ненавидеть указателиЗнаковое событие. А без них - никуда в сях.
Могу примерно так описать, как это у меня происходило:
1) довольно долгое непонимание указателей;
2) с течением времени вникание в их смысл;
3) осознание, что же это такое и для чего оно нужно;
4) радость, что всё понятно - надо всё делать с указателями, использовать их в каждой функции;
5) первые ошибки, связанные с указателями - принятие удара на грудь с решимостью в глазах;
6) ошибки всё ещё не перестают появляться - осознание того, что что-то явно не так;
7) появление ненависти к указателям и её укрепление по мере отладки;
8) в коде, где вроде бы не должно быть ошибок и всё должно работать - ничего не работает. Искренняя ненависть к указателям.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840927
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psih-stalkerУ меня "вылетает" так: "Прекращена работа программы..."
Ты из всех предложений читаешь только первые три слова? Подробности ошибки смотри в
Windows Event Log.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840947
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psih-stalkerМогу примерно так описать, как это у меня происходило
Сколько времени и нервов можно сэкономить, если начинать изучать программирование с
принципов работы процессора, машинных кодов и ассемблера...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840964
Фотография psih-stalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovpsih-stalkerУ меня "вылетает" так: "Прекращена работа программы..."
Ты из всех предложений читаешь только первые три слова? Подробности ошибки смотри в
Windows Event Log.

Не знал об этой штуке. Спасибо.
Проблема связана с модулем ntdll.dll - какие-то ошибки с памятью, я полагаю?
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840971
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psih-stalker,
Код: plaintext
1.
2.
3.
4.
5.
                char* problem = (char*)malloc(0);
                int len = 0;
                printf("\n\nEnter statement: \n\n");
                scanf("%s%n", problem, &len);
 


Дальше не читал - этого достаточно для падения.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840975
Фотография psih-stalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskypsih-stalker,
Код: plaintext
1.
2.
3.
4.
5.
                char* problem = (char*)malloc(0);
                int len = 0;
                printf("\n\nEnter statement: \n\n");
                scanf("%s%n", problem, &len);
 


Дальше не читал - этого достаточно для падения.
Если убрать malloc, то появляется warning, типа неинициализированная переменная. Тогда, получается, нужно хотя бы так?
Код: plaintext
1.
                char* problem = (char*)malloc(1);
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840976
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя не. Дальше еще смешнее.
Код: plaintext
1.
2.
3.
4.
                    LongNum* Res = (LongNum*)malloc(sizeof(LongNum));
                    ...
                    Res->~LongNum();
                    free(Res);


Может все-таки вы будете писать на С++, а не на С, раз вам нужны конструкторы и деструкторы?
Заодно и замените char* на std::string
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840977
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psih-stalker,

Извините, я на секунду предположил что вам знакомы основы языка.
Был не прав ))

В malloc нужно передавать размер создаваемого буфера в байтах, достаточный для хранения всей вводимой строки и нулевого байта после нее.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840981
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекомендую прочитать любую книжку по С++ и потом уже вернуться к исправлению программы.
Потому что то что вы в коде там пишете ... Это ж не художественная книга, у языка есть какие-то базовые правила все-таки )).
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840985
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начните с изучения операторов new/delete
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840989
Фотография psih-stalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskypsih-stalker,

Извините, я на секунду предположил что вам знакомы основы языка.
Был не прав ))

В malloc нужно передавать размер создаваемого буфера в байтах, достаточный для хранения всей вводимой строки и нулевого байта после нее.
А scanf() разве не перевыделяет память? Видимо, нужно на std::string переходить.

Знакомы, но не хватает опыта ещё. =)
new/delete знаю. Дело в том, что я начинал делать проект на Си, и только через два месяца преподаватель разрешил перейти на C++. Ну и по инерции перенёс сюда и malloc и т.д.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38840997
Фотография psih-stalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyХотя не. Дальше еще смешнее.
Код: plaintext
1.
2.
3.
4.
                    LongNum* Res = (LongNum*)malloc(sizeof(LongNum));
                    ...
                    Res->~LongNum();
                    free(Res);


Может все-таки вы будете писать на С++, а не на С, раз вам нужны конструкторы и деструкторы?
Заодно и замените char* на std::string
Надо было раньше на MSDN про деструкторы посмотреть. О_О Получается, у меня явный вызов деструктора нигде не нужен?
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38841001
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psih-stalker,

Экземпляры классов нельзя создавать через malloc.
Только new или простым объявлением.

А про явный вызов деструктора (Res->~LongNum()) забудьте. Он не предназначен для использования в прикладных программах. Тем более что вы его неверно применяете.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38841002
Фотография psih-stalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psih-stalkerПолучается, у меня явный вызов деструктора нигде не нужен?
Хотя ладно, вопрос риторический. Пошёл полностью (снова -_-) переделывать код - авось исправится ошибка.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38841003
Фотография psih-stalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyОн не предназначен для использования в прикладных программах.
А в каких может пригодиться? Так, на будущее.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38841004
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psih-stalkerА scanf() разве не перевыделяет память?
Нет.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38841007
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Путаница с С/C++ это кстати один из траблов которые я-бы поместил в FAQ. Тоже
самое касается смешивания ввода вывода <stdio>/<iostream>
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38841008
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psih-stalkerА в каких может пригодиться? Так, на будущее.
Если вы будете писать свою реализацию стандартной библиотеки - может пригодиться.
Т.е. никогда ))
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38841012
Фотография psih-stalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Окей, спасибо всем за ответы! Ушёл кодить...
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38841021
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грехи наши тяжкие...
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38841066
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskypsih-stalker,

Экземпляры классов нельзя создавать через malloc.
Только new или простым объявлением.

А про явный вызов деструктора (Res->~LongNum()) забудьте. Он не предназначен для использования в прикладных программах. Тем более что вы его неверно применяете.

не, если бы он тут еще placement new добавил, как раз все было бы ок.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38841302
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psih-stalkerОкей, спасибо всем за ответы! Ушёл кодить...
Надо так: «ушёл читать».
Серьёзно, уровень владения крестами нулевой, код полон злобных багов.
...
Рейтинг: 0 / 0
Ошибки при Run, но всё работает при Debug.
    #38841707
Фотография psih-stalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolf,

Anatoly MoskovskyИзвините, я на секунду предположил что вам знакомы основы языка.
Был не прав ))


По ходу дела читаю, ибо это проектная работа в университете, и сдавать для зачёта надо совсем скоро. Хотя нет, правильнее так: читаю и по ходу программирую. Внезапно для себя выяснил, что действительно не знаю основ языка - программировал на Си с редкими вставками типа классов и перегрузки операторов из Плюсов.

Anatoly MoskovskyХотя не. Дальше еще смешнее.
Код: plaintext
1.
2.
3.
4.
                    LongNum* Res = (LongNum*)malloc(sizeof(LongNum));
                    ...
                    Res->~LongNum();
                    free(Res);


Может все-таки вы будете писать на С++, а не на С, раз вам нужны конструкторы и деструкторы?
Заодно и замените char* на std::string

Понял, откуда корни растут. Дело в том, что я пересел на C/C++ в сентябре, как начал учиться в университете. До этого кодил на Delphi, а там, насколько я помню, нужен явный вызов деструктора.
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибки при Run, но всё работает при Debug.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]