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

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

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

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

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

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

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

Не знал об этой штуке. Спасибо.
Проблема связана с модулем ntdll.dll - какие-то ошибки с памятью, я полагаю?
...
Рейтинг: 0 / 0
23.12.2014, 18:02
    #38840971
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибки при Run, но всё работает при Debug.
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
23.12.2014, 18:05
    #38840975
psih-stalker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибки при Run, но всё работает при Debug.
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
23.12.2014, 18:06
    #38840976
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибки при Run, но всё работает при Debug.
Хотя не. Дальше еще смешнее.
Код: plaintext
1.
2.
3.
4.
                    LongNum* Res = (LongNum*)malloc(sizeof(LongNum));
                    ...
                    Res->~LongNum();
                    free(Res);


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

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

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

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

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

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


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

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

А про явный вызов деструктора (Res->~LongNum()) забудьте. Он не предназначен для использования в прикладных программах. Тем более что вы его неверно применяете.
...
Рейтинг: 0 / 0
23.12.2014, 18:32
    #38841002
psih-stalker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибки при Run, но всё работает при Debug.
psih-stalkerПолучается, у меня явный вызов деструктора нигде не нужен?
Хотя ладно, вопрос риторический. Пошёл полностью (снова -_-) переделывать код - авось исправится ошибка.
...
Рейтинг: 0 / 0
23.12.2014, 18:33
    #38841003
psih-stalker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибки при Run, но всё работает при Debug.
Anatoly MoskovskyОн не предназначен для использования в прикладных программах.
А в каких может пригодиться? Так, на будущее.
...
Рейтинг: 0 / 0
23.12.2014, 18:33
    #38841004
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибки при Run, но всё работает при Debug.
psih-stalkerА scanf() разве не перевыделяет память?
Нет.
...
Рейтинг: 0 / 0
23.12.2014, 18:34
    #38841007
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибки при Run, но всё работает при Debug.
Путаница с С/C++ это кстати один из траблов которые я-бы поместил в FAQ. Тоже
самое касается смешивания ввода вывода <stdio>/<iostream>
...
Рейтинг: 0 / 0
23.12.2014, 18:34
    #38841008
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибки при Run, но всё работает при Debug.
psih-stalkerА в каких может пригодиться? Так, на будущее.
Если вы будете писать свою реализацию стандартной библиотеки - может пригодиться.
Т.е. никогда ))
...
Рейтинг: 0 / 0
23.12.2014, 18:39
    #38841012
psih-stalker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибки при Run, но всё работает при Debug.
Окей, спасибо всем за ответы! Ушёл кодить...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибки при Run, но всё работает при Debug. / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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